Администрирование · 11 мин
Как настроить MS SQL Server для работы с 1С
Как настроить MS SQL Server для 1С: выбор редакции, параметры памяти и tempdb, сортировка, права, обслуживание баз и типичные ошибки администраторов.
Клиент-серверный вариант работы 1С на MS SQL Server — стандарт для баз, где одновременно работают десятки пользователей и объём данных измеряется десятками гигабайт. При этом «поставить SQL Server и создать базу» недостаточно: настройки по умолчанию рассчитаны на средний веб- или OLTP-сценарий и часто конфликтуют с тем, как 1С работает с данными. Неправильно выбранная сортировка, маленький tempdb или неограниченная память сервера способны замедлить работу в разы даже на мощном оборудовании.
Материал ориентирован на администратора, который разворачивает новый сервер или приводит в порядок существующий. Рассмотрены выбор редакции, параметры экземпляра, создание базы, обслуживание и контроль результата. Инструкции применимы к актуальным версиям MS SQL Server (2016 и новее) и платформе 1С:Предприятие 8.3.
Выбор редакции и подготовка сервера
Для 1С подходят редакции Standard и Enterprise; Express бесплатен, но ограничен по памяти буферного пула, размеру базы и числу ядер, поэтому годится только для совсем небольших баз с несколькими пользователями. Web-редакция по лицензионным условиям предназначена для веб-приложений и для 1С обычно не применяется. Если бюджет ограничен, Standard закрывает подавляющее большинство сценариев; Enterprise нужен для онлайн-сжатия, секционирования и расширенных возможностей Always On.
Физически сервер баз данных и сервер 1С:Предприятия желательно размещать на разных машинах (физических или виртуальных): оба активно потребляют память, и конкуренция за ресурсы приводит к нестабильной производительности. Дисковая подсистема должна обеспечивать быстрые случайные операции чтения/записи — для рабочих баз предпочтительны SSD или NVMe. Файлы данных, журнал транзакций и tempdb по возможности разносят на разные тома.
Перед установкой убедитесь, что на сервере настроена статическая адресация, а службе SQL Server будет выделена отдельная учётная запись. Также проверьте, что антивирус исключает каталоги с файлами баз данных (.mdf, .ndf, .ldf) — сканирование этих файлов в реальном времени заметно снижает производительность и может вызывать блокировки.
Параметры экземпляра SQL Server
Главный параметр экземпляра — max server memory (MB). По умолчанию SQL Server считает, что может занять всю память машины, и со временем вытесняет операционную систему и другие процессы. Практическое правило: оставьте ОС и прочим службам несколько гигабайт (на выделенном сервере обычно 4–8 ГБ в зависимости от объёма), остальное отдайте SQL Server. Значение задаётся в свойствах сервера в Management Studio или командой sp_configure.
Параметр max degree of parallelism (MAXDOP) определяет, сколько ядер используется для одного запроса. Для нагрузки 1С с большим числом коротких запросов часто рекомендуют ограничить параллелизм (например, значением 1–4 в зависимости от числа ядер и характера нагрузки), а порог cost threshold for parallelism поднять с пятёрки по умолчанию до 25–50, чтобы мелкие запросы не распараллеливались без нужды.
Включите опцию optimize for ad hoc workloads — 1С генерирует много динамических запросов, и эта настройка снижает раздувание кэша планов. Дополнительно проверьте, что учётной записи службы SQL Server выдано право «Lock pages in memory» (по ситуации) и выполнена настройка мгновенной инициализации файлов данных (привилегия «Perform volume maintenance tasks») — она ускоряет создание и рост файлов данных, но не распространяется на журнал транзакций.
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 24576;
EXEC sp_configure 'max degree of parallelism', 4;
EXEC sp_configure 'cost threshold for parallelism', 50;
EXEC sp_configure 'optimize for ad hoc workloads', 1;
RECONFIGURE;Сортировка (collation) и создание базы
Критичное требование 1С к русскоязычным базам — сортировка Cyrillic_General_CI_AS. Она задаётся при установке экземпляра и наследуется базами. Если экземпляр установлен с другой сортировкой (например, SQL_Latin1_General_CP1_CI_AS), база 1С либо не создастся, либо будет вести себя некорректно: ошибки сравнения строк, проблемы с регистром, невозможность выполнить некоторые операции. Сменить collation существующего экземпляра без переустановки штатными средствами нельзя — проще сразу установить правильно.
Новую базу удобнее всего создавать через консоль кластера 1С (при создании информационной базы с галочкой «Создать базу данных в случае её отсутствия») — тогда платформа сама задаст нужные параметры. Если база создаётся вручную в Management Studio, укажите collation Cyrillic_General_CI_AS и модель восстановления: Simple для баз без требований к восстановлению на произвольный момент времени, Full — если нужны бэкапы журнала и восстановление на точку во времени.
Настройте файлы базы: для файла данных задайте разумный начальный размер и прирост фиксированными мегабайтами (например, 256–512 МБ), а не процентами — процентный прирост на большой базе приводит к долгим паузам при расширении. Журнал транзакций при модели Simple будет сам усекаться в контрольных точках; при Full без регулярных бэкапов журнала он разрастётся до заполнения диска.
Настройка tempdb
Системная база tempdb — одно из самых нагруженных мест при работе 1С: платформа активно использует временные таблицы, а запросы с соединениями и группировками опираются на tempdb при нехватке памяти. Начиная с SQL Server 2016 установщик предлагает создать несколько файлов tempdb — не отказывайтесь от этого.
Рекомендуемый подход: число файлов данных tempdb равно числу логических процессоров, но не более 8 (при большем количестве ядер начинайте с 8 и увеличивайте только при наблюдаемых ожиданиях PAGELATCH на tempdb). Все файлы должны быть одинакового размера с одинаковым приростом в мегабайтах — иначе механизм пропорционального заполнения перестанет распределять нагрузку равномерно.
Разместите tempdb на самом быстром доступном диске и задайте достаточный стартовый размер, чтобы базе не приходилось расти в рабочее время. Симптомы проблем с tempdb: периодические «подвисания» запросов при низкой загрузке CPU и диска, ожидания PAGELATCH_UP/EX в sys.dm_os_wait_stats.
- 1Определите число логических процессоров сервера (sys.dm_os_sys_info или диспетчер задач).
- 2Создайте файлы tempdb: по одному на ядро, но не более 8, одинакового размера.
- 3Установите прирост фиксированными мегабайтами, одинаковый для всех файлов.
- 4Разместите файлы на быстром диске с запасом свободного места.
- 5Перезапустите службу SQL Server и проверьте конфигурацию запросом к sys.master_files.
Обслуживание: индексы, статистика, бэкапы
Без регламентного обслуживания база 1С деградирует за месяцы: фрагментируются индексы, устаревает статистика, растёт журнал. Минимальный набор регламентных заданий: еженедельное перестроение (или реорганизация) индексов, ежедневное или еженедельное обновление статистики, ежедневная полная резервная копия и контроль целостности (DBCC CHECKDB) хотя бы раз в неделю.
Оформить обслуживание можно через планы обслуживания (Maintenance Plans) в Management Studio или скриптами через SQL Server Agent. Учтите, что перестроение индексов — ресурсоёмкая операция: планируйте её на ночные часы. В самой 1С также есть регламентное задание обновления статистики — не дублируйте одну и ту же работу на двух уровнях без необходимости.
Резервные копии храните отдельно от сервера базы (другой диск, сетевое хранилище) и периодически проверяйте восстановление на тестовом стенде: копия, которая ни разу не восстанавливалась, не считается надёжной. Дополнительно согласуйте расписание бэкапов с выгрузками .dt, если они используются как второй уровень защиты.
Проверка результата и диагностика проблем
После настройки убедитесь, что ключевые параметры применились: collation базы (свойства базы в SSMS), значения sp_configure, число и размер файлов tempdb, модель восстановления. Затем проверьте работу под реальной нагрузкой: типовые операции (проведение документов, формирование отчётов) не должны выполняться медленнее, чем до миграции или перенастройки.
Для диагностики используйте динамические административные представления: sys.dm_os_wait_stats показывает, чего ждёт сервер, sys.dm_exec_query_stats — самые тяжёлые запросы. На стороне 1С включите технологический журнал с фильтром по длительным событиям DBMSSQL — это позволит связать медленные операции пользователей с конкретными запросами.
Если после правильной базовой настройки узкие места остаются, дальше работают с конкретными запросами: индексы по рекомендациям планов выполнения, пересмотр кода конфигурации, обновление платформы. Универсальных «ускоряющих» настроек сверх описанных нет — глубокая оптимизация всегда привязана к конкретной нагрузке.
Как проверить результат
Cyrillic_General_CI_AS
Любая другая сортировка — риск ошибок сравнения строк в 1С
Задано явно, ОС оставлено несколько ГБ
Значение по умолчанию (очень большое число)
Несколько файлов одинакового размера, прирост в МБ
Один файл, прирост 1 МБ или в процентах
Simple либо Full с регулярными бэкапами журнала
Full без бэкапов журнала, .ldf постоянно растёт
Есть задания на индексы, статистику, бэкапы, CHECKDB
Заданий нет или они завершаются с ошибками
Часто задаваемые вопросы
Можно ли разместить SQL Server и сервер 1С на одной машине?
Технически можно, и для небольших внедрений это рабочий вариант. Обязательно ограничьте max server memory, чтобы SQL Server не вытеснил процессы сервера 1С и ОС. При росте числа пользователей и нагрузки разнесение на две машины даёт более предсказуемую производительность.
Какую модель восстановления выбрать для базы 1С?
Если достаточно восстановления на момент последнего ежедневного бэкапа — Simple: журнал не разрастается, администрирование проще. Если нужно восстановление на произвольный момент времени — Full плюс регулярные резервные копии журнала транзакций, иначе файл журнала заполнит диск.
Нужно ли включать сжатие данных в SQL Server для 1С?
Сжатие страниц доступно в Enterprise-редакции и может сократить объём базы и ускорить чтение с диска ценой дополнительной нагрузки на CPU. Для больших баз на Enterprise это имеет смысл тестировать на копии; на Standard штатного сжатия таблиц нет.
База работает медленно после переезда на новый сервер — с чего начать?
Проверьте по порядку: collation базы, max server memory, число файлов tempdb, актуальность статистики (выполните обновление вручную), план электропитания Windows (должен быть «Высокая производительность») и исключения антивируса для файлов базы. Чаще всего причина находится в этом списке.
Какие права нужны учётной записи 1С в SQL Server?
Для работы существующей базы достаточно роли db_owner на ней. Для создания новых баз через консоль 1С дополнительно нужна роль dbcreator на уровне сервера. Роль sysadmin выдавать не требуется — это избыточные права и лишний риск.
Как часто делать резервные копии базы 1С на SQL Server?
Минимум — ежедневная полная копия в нерабочее время. Для баз с интенсивным вводом данных добавьте разностные копии в течение дня или бэкапы журнала при модели Full. Периодически проверяйте восстановление копии на тестовом сервере.
Что важно запомнить
Рабочая связка 1С и MS SQL держится на немногих, но критичных настройках: правильный collation, ограниченная память, грамотный tempdb, осмысленная модель восстановления и регулярное обслуживание. Настройте это один раз, автоматизируйте бэкапы и индексы — и сервер будет работать стабильно без постоянного вмешательства.