MS SQL Server под 1С:Предприятие 8.3: от выбора редакции до Always On

· 10 мин

Содержание

Настройка 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С: пошагово

Установщик почти всё делает по умолчанию правильно. Ошибиться легко в трёх местах: сортировка, режим проверки подлинности и расположение файлов.

Шаги мастера установки

  1. На странице «Выбор компонентов» отметьте Database Engine Services. Полнотекстовый поиск, Analysis Services и Reporting Services для 1С не нужны.
  2. Экземпляр — «по умолчанию» (MSSQLSERVER). С именованным экземпляром тоже работает, но в 1С придётся писать Сервер\Экземпляр и держать включённой службу SQL Server Browser.
  3. Учётные записи служб оставьте виртуальными (NT Service\MSSQLSERVER). Отметьте флажок предоставления права «Выполнение задач по обслуживанию томов» — это мгновенная инициализация файлов, база и журнал растут быстрее.
  4. Вкладка «Параметры сортировки»: должно стоять Cyrillic_General_CI_AS. На русской Windows оно выбирается само, на английской — проверьте вручную, после установки поменять сортировку экземпляра очень трудно.
  5. «Конфигурация ядра СУБД» → режим проверки подлинности: смешанный. Задайте сложный пароль sa.
  6. На вкладке каталогов данных разнесите файлы: данные на один диск, журналы на другой, резервные копии на третий. Лучше всего — данные и tempdb на SSD.
  7. Вкладка TempDB (есть с версии 2016): число файлов равно числу ядер, но не больше 8. Размер каждого — одинаковый.
  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С.

  1. В SSMS: «Безопасность» → «Имена входа» → «Создать имя входа».
  2. Проверка подлинности SQL Server, имя, например, usr1c, сложный пароль.
  3. Снимите флажок «Пользователь должен сменить пароль при следующем входе».
  4. Права выбирайте по ситуации:
    • если 1С сама создаёт базы — серверная роль dbcreator;
    • если базы создаёт администратор SQL — пустая база заранее и роль db_owner только в ней.

Если поменять пароль логина в 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С на одну машину?
Можно, для 10–50 пользователей это обычная схема. Обязательно ограничьте память SQL, иначе он вытеснит рабочие процессы 1С.
Что быстрее для 1С: MS SQL или PostgreSQL?
На типовых нагрузках разница невелика, многое решает настройка. MS SQL проще в администрировании под Windows, PostgreSQL бесплатен.
Нужно ли включать READ_COMMITTED_SNAPSHOT вручную?
Нет. Платформа 8.3 сама управляет этим параметром для своих баз. Меняйте его только по рекомендации технической поддержки.
Можно ли смотреть данные базы 1С запросами SQL напрямую?
Читать можно, но имена таблиц служебные (_Document123) и при runtime-лицензии это запрещено условиями. Изменять данные в обход 1С нельзя: нарушится целостность.
Как перенести базу 1С на новый SQL Server?
Сделайте полную копию, восстановите её на новом сервере, создайте логин 1С и в консоли кластера поправьте «Сервер баз данных» в параметрах базы.