Как перевести 1С:Предприятие 8.2 на MS SQL Server 2016 без ошибок и потерь производительности?

Системный администратор IT и автоматизация бизнеса
← На главную

Перевод старых версий платформы 1С:Предприятие на современные версии систем управления базами данных (СУБД) — это всегда вызов для системного администратора и программиста. В нашей практике часто возникает ситуация, когда стабильно работающая конфигурация на платформе 1С:Предприятие 8.2 (8.2.19.130) требует обновления серверной инфраструктуры. Переход с MS SQL Server 2008 на MS SQL Server 2016 выглядит логичным шагом: новая СУБД работает быстрее, лучше использует ресурсы современного оборудования и имеет долгосрочную поддержку.

Однако официальная совместимость MS SQL Server 2016 заявлена компанией 1С только начиная с версии платформы 8.3.9. Для устаревшей ветки 8.2 совместная работа официально не поддерживается. Разберем по шагам, с какими трудностями можно столкнуться при такой миграции, как ведет себя связка на практике и какие настройки необходимо выполнить в SQL Server для обеспечения стабильности и высокой производительности системы.

Опыт практического использования связки 1С 8.2 и SQL 2016

Проанализируем опыт технических специалистов, которые уже провели подобную миграцию в реальных производственных условиях. Практика показывает, что работа платформы 1С 8.2 на MS SQL Server 2016 возможна и может быть весьма успешной. На крупных предприятиях с базами данных объемом около 500 Гб (например, на базе конфигурации УПП) связка работает стабильно в течение нескольких лет.

Более того, известны случаи успешной эксплуатации даже более старых версий, таких как 1С 8.1, на СУБД MS SQL Server 2016. Единственной сложностью при запуске сверхстарых платформ может стать необходимость ручного восстановления некоторых системных хранимых процедур, которые были удалены в новых версиях SQL Server, но для платформы 8.2.19.130 этот шаг обычно не требуется.

Тем не менее, чтобы миграция прошла гладко, а производительность базы данных не упала сразу после запуска, необходимо знать и правильно настроить ключевые технические параметры СУБД.

Подводные камни миграции и их преодоление

Рассмотрим подробнее основные технические проблемы, с которыми вы можете столкнуться при работе 1С 8.2 на SQL Server 2016, и разберем способы их решения.

1. Проблема нового оптимизатора запросов (Cardinality Estimator)

Начиная с версии SQL Server 2014, Microsoft внедрила новую модель оценки кратности данных (Cardinality Estimator), которая используется оптимизатором запросов по умолчанию. Старые версии платформы 1С, включая 8.2, генерируют SQL-запросы, которые рассчитывались под алгоритмы старого оптимизатора. На практике это часто приводит к следующим проблемам:

Решение: Нам необходимо заставить SQL Server 2016 использовать старый, стабильный для 1С алгоритм оптимизации. В SQL Server 2016 это можно сделать элегантно — без использования глобальных флагов трассировки для всего сервера, а только для конкретной базы данных 1С с помощью механизма настроек уровня базы (Database Scoped Configuration). Выполним в SQL Server Management Studio следующий скрипт:


USE [Имя_Вашей_Базы_1С];
GO
ALTER DATABASE SCOPED CONFIGURATION 
SET LEGACY_CARDINALITY_ESTIMATION = ON;
GO

Если по какой-то причине этот параметр не решает проблему полностью, вы можете временно понизить уровень совместимости базы данных (Compatibility Level) до версии SQL Server 2012 (значение 110) или SQL Server 2008 (значение 100):


ALTER DATABASE [Имя_Вашей_Базы_1С] 
SET COMPATIBILITY_LEVEL = 110;
GO

2. Драйверы подключения (SQL Server Native Client)

Для успешного соединения сервера приложений 1С с базой данных на MS SQL Server 2016 требуется наличие корректного OLE DB провайдера. Стоит учитывать важный момент: в дистрибутив SQL Server 2016 больше не входит обновленный Native Client.

Решение: На сервере, где запущен физический процесс (служба) сервера 1С:Предприятие 8.2, необходимо вручную установить компонент Microsoft SQL Server Native Client 11.0 (его можно скачать отдельно, он входит в состав дистрибутивов SQL Server 2012). Без этого драйвера служба сервера 1С не сможет инициализировать подключение к СУБД SQL Server 2016.

3. Особенности работы флагов трассировки в SQL Server 2016

Для оптимизации работы систем 1С на старых версиях SQL Server администраторы традиционно прописывали в параметрах запуска СУБД определенные флаги трассировки. Выясним, как обстоят дела с ними в версии 2016 года:

4. Блокировки данных и режим RCSI (Read Committed Snapshot Isolation)

Платформа 1С 8.2 в типовых конфигурациях чаще всего работает в режиме автоматических (пессимистических) блокировок. В отличие от платформы 8.3, которая спроектирована под управляемые блокировки и режим версионирования строк, для 8.2 включение механизма RCSI на уровне СУБД может вызвать неожиданные фантомные чтения данных или логические ошибки при проведении документов.

Проверим статус режима RCSI для вашей базы данных с помощью следующего запроса:


SELECT name, is_read_committed_snapshot_on 
FROM sys.databases 
WHERE name = 'Имя_Вашей_Базы_1С';
GO

Если вы столкнулись с нестабильным проведением документов или ошибками параллельного доступа, рекомендуется отключить этот режим (значение должно быть 0):


ALTER DATABASE [Имя_Вашей_Базы_1С] 
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE [Имя_Вашей_Базы_1С] 
SET READ_COMMITTED_SNAPSHOT OFF;
GO
ALTER DATABASE [Имя_Вашей_Базы_1С] 
SET MULTI_USER;
GO

Рекомендуемый план безопасной миграции

Для того чтобы свести риски простоя крупного производства к нулю, выполним миграцию по строгому алгоритму:

  1. Создание тестового контура: Разверните копию рабочей базы данных (желательно со всеми 500 Гб данных) на тестовом сервере с установленным MS SQL Server 2016. Аппаратные характеристики тестового сервера должны быть максимально приближены к рабочему.
  2. Масштабное тестирование: Проведите полное тестирование ключевого функционала. Особое внимание уделите тяжелым регламентным операциям: расчет себестоимости, проведение крупных партий документов, закрытие месяца, формирование сложных отчетов за длительные периоды.
  3. Подготовка плана отката (Downgrade): Если при тестировании будут обнаружены критические ошибки, которые невозможно оперативно устранить, помните о правилах лицензирования Microsoft. Покупая современные лицензии SQL Server, вы получаете право на использование предыдущих версий (Downgrade). Вы сможете легально развернуть стабильный SQL Server 2014 или 2012.
  4. Подготовка клиентских мест: Рекомендуется предварительно установить на рабочие станции пользователей платформу версии 8.3 (в режиме совместимости с 8.2). Это позволит вам в случае возникновения непредвиденных критических сбоев платформы 8.2 на новом SQL-сервере оперативно перевести всех пользователей на работу под управлением платформы 8.3, которая полностью совместима с SQL Server 2016.

Таким образом, переход на СУБД MS SQL Server 2016 при использовании платформы 1С 8.2 (8.2.19.130) технически возможен и экономически оправдан за счет прироста производительности СУБД. Главное — заранее установить необходимый драйвер соединения, правильно настроить параметры оптимизатора запросов на уровне СУБД и провести детальное предварительное тестирование на копии базы данных.

← На главную