MS SQL Server под 1С:Предприятие 8.3: от выбора редакции до Always On
Содержание
Настройка MS SQL для 1С сводится к пяти решениям: сортировка Cyrillic_General_CI_AS, ограничение памяти через max server memory, MAXDOP = 1, отдельный логин для кластера 1С и рабочий план обслуживания с резервными копиями. Остальное — тонкая настройка под нагрузку.
MS SQL Server нужен только в клиент-серверном варианте. Файловая база с СУБД не работает : сначала ставят сервер 1С:Предприятия, потом подключают к нему SQL Server. Всё ниже относится к платформе 8.3 и Windows Server 2016 и новее.
Какую редакцию и версию SQL Server выбрать под 1С
Редакцию выбирают по размеру базы и числу пользователей. Ограничения у редакций жёсткие, и упираются в них обычно память и размер файла.
| Редакция | Память под буферный пул | Ядра | Размер базы | Когда подходит |
|---|---|---|---|---|
| Express | около 1,4 ГБ | меньшее из 1 сокета или 4 ядер | до 10 ГБ | тест, маленькая база на 3–5 человек |
| Standard | до 128 ГБ (с версии 2016) | меньшее из 4 сокетов или 24 ядер | без ограничения | типичный офис, 10–150 пользователей |
| Enterprise | ограничена ОС | ограничена ОС | без ограничения | крупные внедрения, Always On с несколькими базами |
💡 Express быстро упирается в 10 ГБ: база бухгалтерии за 3–4 года активной работы легко её перерастает. Для рабочей базы берите Standard сразу.
Лицензирование
Есть два пути:
- 🧾 полная лицензия Microsoft (на ядра или «сервер + клиентские лицензии»);
- 🧾 лицензия SQL Server «для использования с 1С» (runtime). Она дешевле, но работать с базой можно только через 1С. Подключаться к ней сторонними отчётами и приложениями нельзя.
Версия
Перед установкой сверьте версию SQL Server с требованиями своей платформы. Новые выпуски SQL Server поддерживаются не сразу: свежая СУБД со старой платформой может не создать базу или вести себя нестабильно. Безопасный вариант — версия, которую 1С уже заявила как поддерживаемую для вашей сборки 8.3.2x.
Установка MS SQL Server для 1С: пошагово
Установщик почти всё делает по умолчанию правильно. Ошибиться легко в трёх местах: сортировка, режим проверки подлинности и расположение файлов.
Шаги мастера установки
- На странице «Выбор компонентов» отметьте
Database Engine Services. Полнотекстовый поиск, Analysis Services и Reporting Services для 1С не нужны. - Экземпляр — «по умолчанию» (
MSSQLSERVER). С именованным экземпляром тоже работает, но в 1С придётся писатьСервер\Экземпляри держать включённой службу SQL Server Browser. - Учётные записи служб оставьте виртуальными (
NT Service\MSSQLSERVER). Отметьте флажок предоставления права «Выполнение задач по обслуживанию томов» — это мгновенная инициализация файлов, база и журнал растут быстрее. - Вкладка «Параметры сортировки»: должно стоять
Cyrillic_General_CI_AS. На русской Windows оно выбирается само, на английской — проверьте вручную, после установки поменять сортировку экземпляра очень трудно. - «Конфигурация ядра СУБД» → режим проверки подлинности: смешанный. Задайте сложный пароль
sa. - На вкладке каталогов данных разнесите файлы: данные на один диск, журналы на другой, резервные копии на третий. Лучше всего — данные и
tempdbна SSD. - Вкладка TempDB (есть с версии 2016): число файлов равно числу ядер, но не больше 8. Размер каждого — одинаковый.
- Среда SQL Server Management Studio (SSMS) с 2016-й версии ставится отдельно. Скачайте и установите её после сервера.
Сеть и порты
После установки откройте «Диспетчер конфигурации SQL Server» → «Сетевая конфигурация SQL Server» → «Протоколы для MSSQLSERVER». Включите TCP/IP и перезапустите службу SQL Server.
Перезапуск службы обрывает все сеансы 1С на этой СУБД. Делайте это до ввода сервера в работу или в окно обслуживания.
Если SQL Server и сервер 1С стоят на разных машинах, откройте в брандмауэре порт 1433/TCP только для IP сервера 1С. Для именованного экземпляра дополнительно понадобится 1434/UDP (служба Browser) или статический порт в свойствах TCP/IP.
Подключение базы 1С
В консоли кластера 1С: «Информационные базы» → «Создать». Заполните:
- 🔹 «Тип СУБД» —
MSSQLServer; - 🔹 «Сервер баз данных» — имя или IP сервера SQL;
- 🔹 «База данных» — имя базы в SQL;
- 🔹 «Пользователь сервера БД» и пароль — логин, созданный для 1С (см. ниже);
- 🔹 флажок «Создать базу данных в случае ее отсутствия», если база новая.
1С сама создаст базу на основе системной базы model. Отсюда важный приём, о котором ниже.
Параметры экземпляра: память, параллелизм, tempdb
Это раздел, который сильнее всего влияет на скорость 1С.
Ограничение памяти
SQL Server по умолчанию забирает всю память сервера и отдаёт её неохотно. Если на той же машине работает сервер 1С (rphost), они начинают конкурировать, и 1С тормозит.
Ориентир: оставьте Windows 4 ГБ, серверу 1С — по его фактическому потреблению, остальное отдайте SQL. Пример: сервер 64 ГБ, 1С на той же машине съедает около 16 ГБ → SQL получает 64 − 4 − 16 = 44 ГБ, то есть 45 056 МБ.
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 45056;
RECONFIGURE;
Параллелизм
Запросы 1С короткие и многочисленные. Параллельные планы на такой нагрузке чаще мешают: появляются ожидания CXPACKET, растёт загрузка процессора. Для 1С принято ставить MAXDOP = 1:
EXEC sp_configure 'max degree of parallelism', 1;
RECONFIGURE;
Параметр применяется сразу, перезапуск не нужен.
Настройка базы model
Каждая новая база 1С копирует свойства model. Настройте её один раз в SSMS (свойства базы → «Файлы» и «Параметры»):
- 📈 автоприращение в мегабайтах, а не в процентах: данные по 512 МБ, журнал по 256 МБ;
- 📈 модель восстановления — та, что нужна по вашей схеме копирования (см. раздел о резервных копиях).
Иначе новые базы будут расти по 10% и окажутся в полной модели восстановления без копий журнала. Журнал за месяц вырастет до размеров диска.
💡 Также переключите схему электропитания Windows на «Высокая производительность». На серверных платформах по умолчанию стоит «Сбалансированная», и частота процессора проседает.
Безопасность MS SQL при работе с 1С
Не подключайте 1С под sa. Заведите отдельный логин SQL Server для кластера 1С.
- В SSMS: «Безопасность» → «Имена входа» → «Создать имя входа».
- Проверка подлинности SQL Server, имя, например,
usr1c, сложный пароль. - Снимите флажок «Пользователь должен сменить пароль при следующем входе».
- Права выбирайте по ситуации:
- если 1С сама создаёт базы — серверная роль
dbcreator; - если базы создаёт администратор SQL — пустая база заранее и роль
db_ownerтолько в ней.
- если 1С сама создаёт базы — серверная роль
Если поменять пароль логина в SQL и не поменять его в параметрах информационной базы в консоли кластера, пользователи не войдут в 1С. Меняйте в обоих местах в одно окно обслуживания.
Что ещё закрыть:
- 🔒
sa— отключить или сложный пароль, нигде не используемый; - 🔒 порт 1433 открыт только для сервера 1С и рабочего места администратора;
- 🔒 доступ к папке с резервными копиями — только у службы SQL и администраторов;
- 🔒 обновления SQL Server (накопительные пакеты) ставить в окно обслуживания, с копией перед установкой.
Резервное копирование баз 1С средствами SQL
Выгрузка .dt из конфигуратора — не замена резервной копии. Она требует монопольного доступа и на большой базе идёт долго. Резервная копия SQL делается без остановки работы пользователей.
Модель восстановления
| Модель | Что даёт | Расписание копий |
|---|---|---|
| Простая (SIMPLE) | восстановление на момент последней копии | полная раз в сутки ночью + разностная днём |
| Полная (FULL) | восстановление на любую минуту | полная раз в сутки, журнал каждые 15–30 минут |
Если потерять полдня проводок недопустимо — нужна полная модель. Но тогда копии журнала обязательны: без них журнал растёт бесконечно.
Пример команд
-- полная копия со сжатием и проверкой контрольных сумм
BACKUP DATABASE [buh]
TO DISK = N'E:\Backup\buh_full.bak'
WITH COMPRESSION, CHECKSUM, INIT;
-- копия журнала (только для модели FULL)
BACKUP LOG [buh]
TO DISK = N'E:\Backup\buh_log.trn'
WITH COMPRESSION, CHECKSUM;
Сжатие недоступно в Express. Расписание проще всего собрать в «Планах обслуживания» SSMS или заданиях SQL Server Agent (в Express агента нет — используют Планировщик заданий Windows и sqlcmd).
💡 Раз в месяц восстанавливайте копию в тестовую базу и открывайте её в 1С. Копия, которую ни разу не разворачивали, — это надежда, а не копия.
Обслуживание и мониторинг SQL Server для 1С
Регламентные задания
| Задача | Как часто | Зачем |
|---|---|---|
| Обновление статистики | ежедневно ночью | оптимизатор строит верные планы запросов |
Очистка процедурного кэша DBCC FREEPROCCACHE | сразу после обновления статистики | старые планы не используют свежую статистику |
| Реорганизация индексов (фрагментация 5–30%) | раз в неделю | меньше чтений с диска |
| Перестроение индексов (больше 30%) | раз в неделю, ночью | то же, на сильной фрагментации |
Проверка целостности DBCC CHECKDB | раз в неделю | раннее обнаружение повреждений |
Перестроение индексов в Standard идёт с блокировками таблиц. Ставьте его на время, когда в 1С никто не работает, и не одновременно с регламентными заданиями самой 1С.
Не включайте «Сжатие базы данных» (Shrink) в регулярный план. Оно фрагментирует индексы, а файл всё равно снова вырастет.
Что смотреть при жалобах на скорость
- 📊 «Монитор активности» в SSMS — ожидания и самые тяжёлые запросы прямо сейчас;
- 📊 счётчики Windows
Page life expectancyиBatch Requests/sec— нехватку памяти видно по падению первого; - 📊
sys.dm_os_wait_stats— какие ожидания копятся с момента запуска; - 📊 технологический журнал 1С с событиями
DBMSSQL— связывает медленный запрос SQL с конкретной операцией в 1С.
Запрос для быстрого взгляда на ожидания:
SELECT TOP (10) wait_type, wait_time_ms, waiting_tasks_count
FROM sys.dm_os_wait_stats
ORDER BY wait_time_ms DESC;
PAGEIOLATCH_* наверху — упираетесь в диск или память. LCK_M_* — блокировки, разбирайте их через технологический журнал 1С.
Always On для 1С: что учесть
Группы доступности Always On дают отказоустойчивость: если основной сервер падает, база продолжает работать на реплике. 1С с ними работает, но есть особенности.
- 🔁 В параметрах информационной базы в поле «Сервер баз данных» указывают имя прослушивателя (listener), а не имя конкретного узла.
- 🔁 Режим фиксации для 1С — синхронный. При асинхронном после переключения можно потерять последние транзакции.
- 🔁 Базы в группе — только в модели FULL.
- 🔁 Новая база, созданная 1С, сама в группу не попадёт. Её добавляют вручную после создания.
- 🔁 Логин
usr1cнужно создать на всех репликах с одинаковым SID, иначе после переключения пользователь базы окажется «осиротевшим» и 1С не подключится. - 🔁 Задания обслуживания и копирования ставят на каждый узел с проверкой роли через
sys.fn_hadr_is_primary_replica, чтобы они работали только на основной реплике.
В Standard с версии 2016 доступны только базовые группы: одна база в группе и две реплики. Для нескольких баз 1С это означает несколько групп, каждую со своим прослушивателем. Если баз много, считайте стоимость Enterprise.
Ошибки подключения 1С к MS SQL
Большая часть проблем при первом запуске — сеть и права. Выберите свой симптом:
Частые вопросы
Можно ли ставить SQL Server и сервер 1С на одну машину?
Что быстрее для 1С: MS SQL или PostgreSQL?
Нужно ли включать READ_COMMITTED_SNAPSHOT вручную?
Можно ли смотреть данные базы 1С запросами SQL напрямую?
_Document123) и при runtime-лицензии это запрещено условиями. Изменять данные в обход 1С нельзя: нарушится целостность.