Переход с файловой версии базы данных 1С на клиент-серверный вариант (MS SQL Server) — это важный этап масштабирования системы, который позволяет значительно увеличить стабильность работы, объем хранимых данных и количество одновременно работающих пользователей. Однако этот процесс скрывает в себе ряд технологических особенностей, которые могут привести к падению производительности или ошибкам в данных, если не выполнить предварительную подготовку.
В этой статье мы подробно разберем алгоритм миграции, проанализируем критические настройки SQL-сервера и выясним, как обеспечить бесперебойную работу распределенных информационных баз (РИБ) после переезда.
Прежде чем приступать к любым манипуляциям с базой данных, необходимо создать полную резервную копию. Рассмотрим это как обязательное правило безопасности. Любые действия по тестированию и исправлению могут быть необратимыми.
Для начала выполним базовую проверку целостности файловой базы. Разберем основные действия:
chdbfl.exe, которая находится в папке bin установленной платформы 1С. Это позволит устранить физические повреждения файла 1Cv8.1CD на уровне страниц данных..dt.После того как мы убедились в чистоте файловой базы, переходим к этапу переноса. Разберем по шагам создание целевой среды:
.dt.Важный нюанс: Смещение дат (Date Offset). Проанализируем этот параметр. Microsoft SQL Server исторически поддерживает даты начиная с 1753 года, в то время как 1С позволяет вводить даты с 0001 года. Если в вашей базе есть «пустые» даты или специфические исторические данные, при создании базы в консоли 1С обязательно установите параметр «Смещение дат» в значение 2000. Это прибавит 2000 лет ко всем датам при хранении в SQL, что предотвратит ошибки записи.
Многие системные администраторы полагают, что стандартной установки SQL Server достаточно. Это не так. Выясним, какие параметры влияют на быстродействие 1С больше всего.
Настройка MAXDOP (Max Degree of Parallelism). По умолчанию SQL Server пытается распараллелить выполнение одного тяжелого запроса на все ядра процессора. Для архитектуры 1С это часто становится губительным, вызывая взаимные блокировки (deadlocks). Установим значение параллелизма в 1.
Рассмотрим пример команды для настройки через SQL Management Studio:
EXEC sys.sp_configure N'show advanced options', N'1'
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'max degree of parallelism', N'1'
RECONFIGURE WITH OVERRIDE
GO
Ограничение оперативной памяти. SQL Server потребляет столько памяти, сколько ему доступно. Если сервер приложений 1С и SQL-сервер находятся на одном физическом сервере, SQL может «задушить» 1С, что приведет к фатальным сбоям. Рекомендуется оставить операционной системе и серверу 1С минимум 4-8 ГБ (в зависимости от нагрузки), а остальное жестко закрепить за SQL через параметр max server memory.
Если переводимая база является Центральным Узлом (ЦБ), необходимо проанализировать состояние планов обмена. Рассмотрим основные риски:
.dt в новую SQL-базу внутренний идентификатор базы меняется. Это может привести к тому, что внешние системы интеграции или некоторые механизмы синхронизации перестанут узнавать базу.ПланыОбмена.УстановитьНомерОтправленного() и ПланыОбмена.УстановитьНомерПринятого().Посмотрим, как выглядит программная корректировка номеров сообщений (в обработке):
УзелОбъекта = ПланОбменаСсылка.ПолучитьОбъект();
УзелОбъекта.НомерОтправленного = НужныйНомер;
УзелОбъекта.НомерПринятого = НужныйНомер;
УзелОбъекта.Записать();
Файловая база работает по принципу прямого обращения к диску, а SQL-версия сильно зависит от качества индексов и статистики. Разберем обязательные регламентные операции, которые нужно настроить сразу после перехода:
tempdb на самых быстрых дисках (SSD/NVMe). Рекомендуется создать количество файлов данных tempdb, равное числу логических ядер процессора (но обычно не более 8).Модель восстановления (Recovery Model). Для большинства учетных систем 1С рекомендуется устанавливать модель Simple. Это предотвратит бесконтрольный рост файла лога транзакций (.LDF), который в файловом варианте отсутствовал как сущность, а в SQL может занять сотни гигабайт за один день при активной работе.
Переход на SQL — это не просто перенос данных через .dt, это смена парадигмы работы с данными. Мы рассмотрели основные этапы: от подготовки файла до тонкой настройки сервера. Помните, что клиент-серверный вариант гораздо более чувствителен к написанию запросов в коде 1С. То, что быстро работало в файловой базе (например, запросы в циклах или получение данных «через точку»), в SQL-версии может замедлиться из-за сетевых накладных расходов и механизмов управляемых блокировок.
Перед окончательным переходом продуктивной базы обязательно протестируйте работу всех ключевых бизнес-процессов на тестовой SQL-базе в течение 1-2 дней, чтобы убедиться в отсутствии конфликтов блокировок и приемлемой скорости работы.