Настройка Microsoft SQL Server для 1С:Предприятия
Введение
Ниже — практический чеклист настройки 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

Проверка: создайте тестовую базу с файлом данных 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
}

Схема питания — «Высокая производительность» (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 и ОС.

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

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

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

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


Remote admin connections — включите выделенное административное подключение:
EXEC sp_configure 'remote admin connections', 1;
GO
RECONFIGURE;
GO
Параметры баз (model, tempdb, рабочая)
model — шаблон для новых баз: настройки отсюда наследуются при CREATE DATABASE.

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

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

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

- Отдельный массив под 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.

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

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


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