Переход с устаревшей версии MS SQL Server 2008 на современную SQL Server 2017 — это ответственный процесс, который требует не только простого копирования файлов, но и тонкой настройки производительности. В этой статье мы разберем основные методы миграции, проверенные специалистами, и выясним, как избежать типичных проблем, связанных с падением скорости работы 1С после обновления.
Рассмотрим наиболее надежный и стандартный способ — создание бэкапа на старом сервере и его восстановление на новом. Проанализируем последовательность действий:
.bak на новый сервер.Важно помнить, что SQL Server 2017 поддерживает восстановление баз, созданных в версии 2008. Если при попытке восстановления система «не видит» файл .mdf или .bak, проанализируем ситуацию: чаще всего это связано с отсутствием прав доступа у учетной записи, под которой запущена служба SQL Server, к папке с бэкапом. Проверьте права на чтение и запись для этой директории.
Разберем альтернативный способ, который часто оказывается быстрее при работе на одной физической машине или при прямом переносе дисков. Посмотрим на алгоритм:
rphost сервера приложений.Detach для нужной базы данных..mdf (данные) и .ldf (лог транзакций) в каталог данных нового сервера SQL 2017..mdf.Как показала практика обсуждений, этот метод успешно работает даже при таком большом скачке версий (с 2008 на 2017). Однако помните, что после этой операции база станет недоступна для открытия в старом SQL 2008, так как формат файлов будет обновлен.
Рассмотрим вариант средствами самой платформы 1С. Этот метод заключается в создании файла .dt. Выясним его особенности:
Основной минус этого подхода — время. Для базы объемом более 50 ГБ процесс выгрузки и последующей загрузки в новую пустую базу может занять более 12 часов. Кроме того, на время выгрузки база должна быть полностью монопольна. Если бизнес не готов к длительному простою, этот вариант использовать не рекомендуется. Однако он полезен тем, что полностью пересоздает структуру таблиц и индексов «с нуля», что иногда помогает исправить логические ошибки в данных.
После того как мы успешно восстановили базу на SQL 2017, проанализируем важный технический нюанс. По умолчанию база сохранит уровень совместимости «100» (SQL 2008). Чтобы база начала использовать возможности нового движка, его нужно поднять до «140».
Внимание: Для старых конфигураций, таких как Управление торговлей 11.1, резкое повышение уровня совместимости может привести к замедлению запросов. Рекомендуется сначала запустить систему на уровне 100, провести тесты, а затем переключаться на 140.
Разберем ситуацию, когда после переноса 1С начала «тормозить». В SQL Server 2014 и выше появился новый механизм оценки количества строк. Для 1С это часто становится проблемой. Чтобы вернуть старую (более стабильную для 1С) логику работы, выполним следующую команду в SQL-запросе:
ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = ON;
GO
Это заставит новый SQL 2017 использовать проверенные алгоритмы оптимизации 2008 года, что во многих случаях мгновенно возвращает привычную скорость работы 1С.
Выясним причину, по которой пользователи 1С не могут зайти в базу после миграции. Идентификаторы (SID) пользователей в базе данных не совпадают с новыми логинами на сервере SQL. Для исправления ситуации выполним «связывание» пользователей. Воспользуемся скриптом:
USE [Имя_Вашей_Базы];
GO
-- Исправление конкретного пользователя
ALTER USER [Имя_Пользователя_БД] WITH LOGIN = [Имя_Логина_Сервера];
GO
Если пользователей много, проанализируем возможность использования системной процедуры sp_change_users_login с параметром Auto_Fix.
Чтобы база данных работала максимально эффективно на новом месте, выполним три критически важных действия:
EXEC sp_updatestats;.DBCC CHECKDB;, чтобы убедиться, что при «перескоке» через несколько поколений SQL Server не возникло структурных повреждений.Посмотрим на настройки сервера. SQL Server 2017 требует грамотного распределения ресурсов:
Ограничение памяти: Если сервер 1С и SQL Server стоят на одной машине, обязательно установим параметр Maximum Server Memory. Если этого не сделать, SQL заберет всю память, и процессам rphost будет нечем «дышать», что приведет к аварийным завершениям сеансов.
TempDB: В SQL 2017 рекомендуется разделять tempdb на несколько файлов данных (обычно по количеству ядер процессора, но не более 8). Это значительно ускоряет работу 1С с временными таблицами, которые активно используются в сложных отчетах.
Проанализируем программную часть. На компьютере, где установлен сервер приложений 1С, должен быть актуальный драйвер для связи с БД. Для SQL 2017 рекомендуется использовать Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL). Старый SQL Native Client от 2008 версии может работать некорректно с новыми типами данных или вызывать ошибки соединения.
Подводя итог, можно сказать: наиболее эффективный путь — это Backup/Restore или Attach/Detach с последующей настройкой LEGACY_CARDINALITY_ESTIMATION и обязательным обновлением статистики. Это гарантирует стабильную работу 1С на современной платформе.