Аварийный выход из строя оборудования — одна из самых критических ситуаций в работе системного администратора, особенно когда актуальные резервные копии отсутствуют. Если в распоряжении остались только первичные файлы данных СУБД (mdf) и журнал транзакций (ldf), базу данных можно вернуть к жизни. Разберем по шагам, как правильно перенести данные на новый экземпляр MS SQL Server, зарегистрировать информационную базу в кластере серверов 1С и избежать распространенных системных ошибок.
Проанализируем ситуацию: системный администратор развернул новый экземпляр MS SQL Server, успешно присоединил файлы базы данных через SQL Server Management Studio (SSMS), однако клиентское приложение 1С сообщает, что информационная база не обнаружена, и предлагает создать новую. Причина кроется в архитектуре клиент-серверного взаимодействия 1С:Предприятие. Платформа 1С в клиент-серверном режиме обращается не напрямую к таблицам MS SQL Server, а взаимодействует со службой кластера серверов 1С. Если база примонтирована на уровне СУБД, но не зарегистрирована в консоли администрирования кластера серверов 1С, служба 1С просто не знает о существовании этой базы и трактует обращение пользователя как попытку инициализации новой информационной базы.
Рассмотрим процедуру подключения файлов на сервере СУБД. Перед началом убедимся, что служба SQL Server имеет права на чтение и запись в каталог, где лежат перенесенные файлы.
sa).mdf. Файл журнала ldf при этом подтянется автоматически, если он расположен в том же каталоге.ldf поврежден или утерян в результате аварийного отключения, стандартное присоединение завершится ошибкой. В этом случае журнал транзакций можно пересоздать заново принудительной T-SQL командой:
CREATE DATABASE [TradeBase]
ON (FILENAME = 'D:\SQLData\TradeBase.mdf')
FOR ATTACH_REBUILD_LOG;
Важно: при присоединении файла mdf к более новой версии СУБД (например, при переходе с SQL Server 2000/2005 на SQL Server 2008) происходит автоматическое и необратимое повышение внутренней версии базы данных. Вернуть базу обратно на старую версию сервера простым отсоединением файлов будет уже невозможно.
Разберем тонкости настройки безопасности и параметров СУБД, игнорирование которых приводит к падению соединений 1С:
tempdb совпадают с параметрами базы 1С (стандартным является Cyrillic_General_CI_AS). Несовпадение вызовет критические ошибки при формировании временных таблиц.
USE [TradeBase];
EXEC sp_change_users_login 'Update_One', 'UserName1C', 'UserName1C';
Также можно повторно выдать учетной записи роль db_owner в свойствах сопоставления пользователей базы данных.
Теперь устраним главную причину ошибки, с которой столкнулся автор темы, и свяжем сервер приложений 1С с СУБД:
TradeBase).localhost или имя экземпляра).MS SQL Server.Проанализируем техническую совместимость связки компонентов. Если используется старая платформа (в теме упоминается ветка 8.1 и переход на SQL Server 2008), следует помнить:
8.1.13.8.1.13, работа с SQL Server 2008 приведет к синтаксическим ошибкам запросов СУБД. В этом случае необходимо обновить платформу 1С:Предприятие до финального стабильного релиза ветки (8.1.15) либо использовать экземпляр MS SQL Server 2005.Поскольку сервер завершил работу аварийно (сгорела материнская плата), незафиксированные транзакции могли нарушить логическую и физическую структуру таблиц. Обязательно выполним следующие регламентные действия:
DBCC CHECKDB ('TradeBase') WITH NO_INFOMSGS, ALL_ERRORMSGS;
dt через Конфигуратор, чтобы убедиться в отсутствии скрытых повреждений таблиц.