Как правильно развернуть информационную базу 1С в клиент-серверном режиме на MS SQL Server

1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Развертывание информационной базы в клиент-серверном варианте под управлением MS SQL Server — типовая задача системного администратора и разработчика 1С. Однако стандартная последовательность «создать пустую базу в SQL и загрузить выгрузку .dt через Конфигуратор» таит в себе множество подводных камней: от ошибок кодировки и прав доступа до критического замедления запросов и переполнения журналов транзакций. Разберем по шагам, как правильно развернуть и подготовить базу к промышленной эксплуатации, какие инструменты использовать и каких ошибок следует избегать.

Способ 1. Автоматическое создание базы через кластер 1С:Предприятия

Наиболее простой и рекомендованный разработчиками платформы путь — доверить первичное создание физической базы данных самому серверу 1С:Предприятия. В этом случае кластер автоматически применит требуемую структуру таблиц и базовые параметры. Рассмотрим порядок действий:

  1. Откроем утилиту администрирования кластера серверов 1С:Предприятия (консоль MMC) либо перейдем в диалог добавления базы в окне запуска 1С.
  2. В ветке нужного кластера перейдем к разделу Информационные базы и вызовем команду добавления новой информационной базы.
  3. Зададим имя базы в кластере, укажем тип СУБД (MS SQL Server), имя сервера баз данных, имя создаваемой базы в СУБД, а также логин и пароль администратора SQL (пользователь должен обладать правами на создание баз данных, например ролью dbcreator или sysadmin).
  4. Убедимся, что флаг Создавать базу данных в случае ее отсутствия установлен.
  5. Установим параметр Смещение дат. Обратите внимание: в современных версиях платформы и СУБД рекомендуется оставлять значение 0, если конфигурация не требует явного хранения дат ранее 1753 года. Изменить это значение после создания базы без полной перезаливки данных невозможно.
  6. Нажмем ОК. Сервер 1С самостоятельно подключится к MS SQL Server, создаст пустую базу данных нужной структуры и зарегистрирует ее в кластере.

Способ 2. Предварительное создание базы средствами MS SQL Server

В крупных корпоративных средах системные администраторы часто предпочитают создавать базу вручную в среде SQL Server Management Studio (SSMS), чтобы сразу разнести файлы данных .mdf и журнала транзакций .ldf по разным физическим дискам или задать особый шаг авторасширения. Проанализируем, как подключить такую базу к 1С без ошибок:

  1. Откроем SSMS и создадим новую базу данных с требуемым именем.
  2. Обязательно проверим параметр сортировки (Collation). Для корректной работы с русскоязычными конфигурациями 1С параметры сортировки создаваемой базы и системных баз master и tempdb должны совпадать. Стандартное значение — Cyrillic_General_CI_AS. Несовпадение параметров сортировки приведет к ошибкам несовместимости типов при выполнении запросов с временными таблицами.
  3. Назначим учетной записи СУБД, под которой сервер 1С подключается к базе, роль db_owner для созданной базы, а также выдадим серверное разрешение VIEW SERVER STATE (необходимо серверу 1С для мониторинга блокировок и соединений).
  4. Перейдем в консоль кластера 1С и добавим новую информационную базу с теми же параметрами подключения.
  5. Критически важный момент: снимем флаг Создавать базу данных в случае ее отсутствия. Если этого не сделать, платформа определит, что база на сервере SQL уже существует, и завершит операцию с ошибкой.

Загрузка данных и предотвращение переполнения диска

После того как пустая база инициализирована и подключена, перейдем к переносу данных. Для тестовых и небольших баз обычно используется файл выгрузки .dt. Разберем особенности этого процесса:

При загрузке .dt через меню Администрирование → Загрузить информационную базу в Конфигураторе все данные пишутся огромными транзакциями. Если в свойствах базы данных на SQL Server установлена модель восстановления Full (Полная), журнал транзакций .ldf мгновенно вырастет до гигантских размеров и может исчерпать все свободное дисковое пространство. Чтобы этого избежать, выполним оптимизацию:

  1. В свойствах базы данных в SSMS на вкладке Options временно переведем модель восстановления (Recovery model) в режим Simple (Простая).
  2. Запустим Конфигуратор 1С в 64-разрядном режиме. Использование 32-разрядного клиента при загрузке больших файлов .dt часто приводит к аварийному завершению работы с ошибкой нехватки памяти (Out of memory).
  3. Выполним загрузку файла выгрузки и дождемся успешного завершения операции.
  4. Если для промышленной эксплуатации требуется регулярное создание бэкапов журнала транзакций, вернем модель восстановления в режим Full и сразу же сделаем полную резервную копию базы.

Важное предостережение: выгрузка .dt не является инструментом резервного копирования для высоконагруженных баз. Если выполняется перенос существующей клиент-серверной базы с одного сервера SQL на другой, правильнее использовать штатный механизм резервного копирования и восстановления СУБД (файлы .bak), что сэкономит часы времени и гарантирует целостность структуры метаданных.

Обязательные регламентные действия после развертывания

Многие специалисты совершают критическую ошибку, отдавая базу пользователям сразу после загрузки .dt. В этот момент оптимизатор запросов SQL Server не имеет актуальных сведений о распределении данных, из-за чего даже простые запросы начинают зависать, провоцируя взаимоблокировки. Выясним причину и применим обязательные настройки:

  1. Обновление статистик: сразу после загрузки данных запустим процедуру пересчета статистик в SSMS. Для быстрого обновления всех таблиц базы выполним команду:
    
    USE [ИмяВашейБазы];
    EXEC sp_updatestats;
    
    Для нагруженных информационных баз рекомендуется настроить регламентное обслуживание с полным сканированием (WITH FULLSCAN) для ключевых таблиц регистров и документов.
  2. Настройка базы tempdb: производительность клиент-серверной 1С напрямую зависит от базы временных таблиц. Убедимся, что tempdb расположена на самом быстром дисковом накопителе, а количество файлов данных соответствует числу ядер процессора (но не более 8 для исключения конкуренции страниц распределения).
  3. Мгновенная инициализация файлов: назначим сервисной учетной записи, под которой работает служба SQL Server, локальное право безопасности Windows Выполнение задач по обслуживанию томов (SE_MANAGE_VOLUME_NAME). Это избавит систему от зануления диска при расширении файлов данных и ускорит операции с базой.
← На главную