Введение

Ниже — практический чеклист настройки Microsoft SQL Server под 1С:Предприятие. Удобно пройти по пунктам после установки SQL и перед созданием рабочих баз, либо сверить уже работающий инстанс.

Материал адаптирован по методическим рекомендациям 1С: Настройки Microsoft SQL Server для работы с 1С:Предприятием (ITS, metod8dev / 5904). Формулировки переработаны под эксплуатацию; Boost SQL Server priority в оригинале нет — обычно этот параметр не трогаем.

Общие

  • Service Pack и Cumulative Update — поставьте актуальные SP/CU для вашей версии SQL Server. Список обновлений: KB 2936603.
  • Выравнивание и форматирование дисков — сектора по границе 1024 КБ, размер блока NTFS 64 КБ (если производитель СХД не требует иного). Подробнее: TechNet — Disk Partition Alignment.

Операционная система

Instant File Initialization — дайте право «Perform volume maintenance tasks» пользователю службы SQL Server (Database instant file initialization). Это ускоряет создание и рост файлов данных.

Через PowerShell: узнать аккаунт службы и выдать SeManageVolumePrivilege (Perform volume maintenance tasks) через secedit:

# Аккаунт службы SQL Server (default instance) (Get-CimInstance Win32_Service -Filter "Name='MSSQLSERVER'").StartName # Именованный инстанс: Name='MSSQL`$INSTANCENAME' # Выдача SeManageVolumePrivilege (Instant File Initialization) $account = 'NT SERVICE\MSSQLSERVER' # замените при необходимости (DOMAIN\sqlsvc и т.п.) $tmp = "$env:TEMP\ifi_rights" New-Item -ItemType Directory -Force -Path $tmp | Out-Null secedit /export /cfg "$tmp\inf.cfg" | Out-Null $sid = (New-Object System.Security.Principal.NTAccount($account)).Translate([System.Security.Principal.SecurityIdentifier]).Value $cfg = Get-Content "$tmp\inf.cfg" $line = $cfg | Where-Object { $_ -like 'SeManageVolumePrivilege*' } if ($line -and $line -notlike "*$sid*") { $cfg = $cfg -replace [regex]::Escape($line), ($line + ",*$sid") $cfg | Set-Content "$tmp\inf.cfg" -Encoding Unicode secedit /configure /db "$tmp\secedit.sdb" /cfg "$tmp\inf.cfg" /areas USER_RIGHTS | Out-Null } # Либо вручную: secpol.msc → Local Policies → User Rights Assignment
Instant File Initialization для службы SQL Server

Проверка: создайте тестовую базу с файлом данных 5 ГБ и журналом 1 МБ. Если создание почти мгновенное — всё ок. Тестовую базу удалите.

После выдачи права перезапустите службу SQL Server; проверка — создание тестовой БД ~5 ГБ (мгновенно = IFI работает).

Lock pages in memory — разрешение «блокировка страниц в памяти» для учётки службы SQL. Не нужно, если сервер 1С и SQL стоят на одном хосте.

Аналогично IFI, право SeLockMemoryPrivilege через PowerShell (если 1С и SQL на одном сервере — обычно не включают):

# Аккаунт службы SQL Server (Get-CimInstance Win32_Service -Filter "Name='MSSQLSERVER'").StartName # Выдача SeLockMemoryPrivilege (Lock pages in memory) $account = 'NT SERVICE\MSSQLSERVER' # замените при необходимости $tmp = "$env:TEMP\lock_pages_rights" New-Item -ItemType Directory -Force -Path $tmp | Out-Null secedit /export /cfg "$tmp\inf.cfg" | Out-Null $sid = (New-Object System.Security.Principal.NTAccount($account)).Translate([System.Security.Principal.SecurityIdentifier]).Value $cfg = Get-Content "$tmp\inf.cfg" $line = $cfg | Where-Object { $_ -like 'SeLockMemoryPrivilege*' } if ($line -and $line -notlike "*$sid*") { $cfg = $cfg -replace [regex]::Escape($line), ($line + ",*$sid") $cfg | Set-Content "$tmp\inf.cfg" -Encoding Unicode secedit /configure /db "$tmp\secedit.sdb" /cfg "$tmp\inf.cfg" /areas USER_RIGHTS | Out-Null }
Lock pages in memory в локальной политике безопасности

Схема питания — «Высокая производительность» (High Performance), чтобы CPU не уходил в энергосбережение.

Включить схему «Высокая производительность» из PowerShell:

powercfg /list # Высокая производительность (GUID на большинстве систем Windows Server): powercfg -setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c # Или найти GUID по имени и активировать: $hp = powercfg /list | Select-String 'Высокая производительность|High performance' # powercfg /setactive SCHEME_MIN # алиас High performance (GUID может отличаться)
Схема электропитания Высокая производительность

Без сжатия файлов БД — на каталогах data/log отключите NTFS-сжатие для файлов .mdf/.ldf/.ndf.

Отключение сжатия файлов базы данных

Исключения из file-level backup — агенты вроде Backup Exec не должны копировать «живые» файлы данных и журналов на уровне файловой системы. Резервные копии — через SQL Backup / планы обслуживания.

Настройки сервера

Память (Memory) — задайте верхний предел Max Server Memory. Если 1С и SQL на одном сервере, оставьте запас ОЗУ под rphost/rmngr и ОС.

Настройка Max Server Memory в Server Properties

Пути по умолчанию — data и log на разных дисковых массивах. По ориентирам Microsoft: отклик диска с data ≈ 10–20 мс, с log ≈ 1–5 мс.

Пути по умолчанию для data и log

MAXDOP = 1 — Max Degree of Parallelism для работы с 1С обычно ставят в 1.

Max Degree of Parallelism = 1

Режим аутентификации — включите SQL Server and Windows Authentication mode (смешанный).

Смешанный режим аутентификации SQL Server

Логины — отдельный SQL-логин на каждую рабочую базу; роли public и dbcreator.

Создание нового логина SQL Server
Роли public и dbcreator для логина

Remote admin connections — включите выделенное административное подключение:

EXEC sp_configure 'remote admin connections', 1; GO RECONFIGURE; GO

Параметры баз (model, tempdb, рабочая)

model — шаблон для новых баз: настройки отсюда наследуются при CREATE DATABASE.

База model в Object Explorer
  • Начальный размер data: 1–10 ГБ
  • Начальный размер log: 1–2 ГБ
  • Автоприрост (File Growth): 512 МБ
Размеры и прирост файлов в model

Модель восстановления — по политике бэкапов. Параметр Auto Update Statistics Asynchronously = True.

Options базы model: async statistics

tempdb — разбейте на 4 файла данных одинакового размера.

Несколько файлов данных tempdb
  • Отдельный массив под tempdb: Initial Size ≈ 50% объёма диска / число файлов
  • tempdb рядом с рабочими базами: Initial Size 1–10 ГБ на файл
  • File Growth: 512 МБ

Рабочая база — те же опции, что у model, кроме Initial Size:

  • Data — сразу под ожидаемый размер на длительный срок
  • Log — такой, чтобы не рос между операциями BACKUP LOG

Флаги трассировки

  • 4199 — для SQL Server 2014 включает исправления оптимизатора запросов (KB 974006). На более новых версиях поведение зависит от CU — сверяйте с документацией.
  • 1118 — не использовать смешанные экстенты. В SQL Server 2016+ это поведение уже по умолчанию; флаг на 2016+ обычно не нужен.

Временно включить флаги в текущем сеансе через sqlcmd из PowerShell (-1 = глобально до перезапуска службы):

sqlcmd -S localhost -E -Q "DBCC TRACEON (4199, -1); DBCC TRACEON (1118, -1);"

Для постоянного эффекта добавьте -T4199 и -T1118 в Startup Parameters (SQL Server Configuration Manager → Startup Parameters) или через реестр/WMI — после изменения перезапустите службу SQL Server.

Startup Parameters: флаги трассировки 4199 и 1118

Сетевые протоколы

  • Включить TCP/IP
  • Если 1С и SQL на одном хосте — включить Shared Memory
  • Named Pipes — отключить
SQL Server Configuration Manager: протоколы

Обслуживание и бэкапы

  • Настроить Database Mail (учётная запись SMTP)
  • Создать Operator с email для оповещений
  • В Maintenance Plans при ошибках — Notify operator
  • Настроить резервное копирование по утверждённому плану (FULL / DIFF / LOG)
  • После первого автобэкапа — тестовый restore на резервном сервере и проверка базы
  • Регламент обслуживания рабочих баз: ITS metod8dev / 5837
Operators для оповещений SQL Server Agent
Notify Operator в плане обслуживания

Перезапуск служб

После применения настроек (память, MAXDOP, протоколы, startup-флаги, tempdb) перезапустите службы Microsoft SQL Server и, при необходимости, SQL Server Agent — часть параметров вступает в силу только после рестарта.

Услуги

Нужна помощь с установкой и настройкой Microsoft SQL Server под 1С:Предприятие, оптимизацией памяти/tempdb, планами обслуживания или схемой бэкапов?
Помогаю с развёртыванием связки 1С + SQL, проверкой по чеклисту и сопровождением серверов.
Свяжитесь для консультации и обсуждения деталей.