При аварийном отключении питания или сбоях оборудования база данных 1С:Предприятия на сервере MS SQL Server может перейти в состояние сбоя. Если системные администраторы восстановили из бэкапа исходные файлы данных .mdf и журнала транзакций .ldf, перед нами встает задача корректно монтировать эти файлы на экземпляре СУБД и подключить обновленную базу к кластеру 1С.
Рассмотрим по шагам, как правильно выполнить эту процедуру через графический интерфейс, с помощью SQL-скриптов и какие дополнительные действия обязательны для обеспечения стабильной работы пользователей.
Разберем наиболее простой интерактивный способ восстановления работы базы данных с использованием графической консоли управления MS SQL Server.
.mdf и .ldf. Скопируем их в целевой каталог хранения баз данных SQL-сервера. Если исходная поврежденная база еще зарегистрирована на сервере, изменим имена файлов восстановленной базы, чтобы избежать конфликтов.sa)..mdf. Файл журнала транзакций .ldf при этом подтянется автоматически, если он расположен в том же каталоге.Проанализируем альтернативный вариант, который позволяет выполнить присоединение базы данных с помощью прямого запроса T-SQL. Этот способ удобен при автоматизации или выполнении работ через сценарии командной строки.
Выполним следующий запрос в окне New Query:
USE [master]
GO
CREATE DATABASE [MyBase] ON
( FILENAME = N'C:\MSSql\Database\MyBase.mdf' ),
( FILENAME = N'C:\MSSql\Database\MyBase_Log.ldf' )
FOR ATTACH
GO
Если файл журнала транзакций .ldf оказался полностью поврежден из-за внезапного отключения питания, но главный файл .mdf цел, пересоздадим журнал с помощью команды ATTACH_REBUILD_LOG:
CREATE DATABASE [MyBase] ON
( FILENAME = N'C:\MSSql\Database\MyBase.mdf' )
FOR ATTACH_REBUILD_LOG
GO
Выясним, как сделать так, чтобы с монтированной базой смогли работать пользователи 1С. Простого присоединения файлов на уровне MS SQL Server недостаточно — необходимо прописать информационную базу в консоли администрирования кластера 1С:Предприятия.
sa) и пароль.ragent) для очистки кэша процессов rphost и завершения подвисших сеансов.Посмотрим на важный этап, который нельзя пропускать после аварийных сбоев питания. В файле данных могли остаться незавершенные транзакции или поврежденные страницы. Обязательно выполним проверку логической и физической целостности структуры базы данных:
DBCC CHECKDB ('MyBase') WITH NO_INFOMSGS, ALL_ERRORMSGS
GO
Если команда DBCC CHECKDB обнаружила ошибки, переведем базу данных в однопользовательский режим и запустим процедуру автоматического восстановления:
ALTER DATABASE [MyBase] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB ('MyBase', REPAIR_ALLOW_DATA_LOSS);
GO
ALTER DATABASE [MyBase] SET MULTI_USER;
GO
Важно: Перед запуском операций исправления с параметром REPAIR_ALLOW_DATA_LOSS убедимся, что сделана резервная копия текущих файлов .mdf и .ldf.
Рассмотрим частую проблему: при попытке присоединить файлы базы данных возникает ошибка доступа (например, Error 5120 или 5123). Это происходит из-за того, что у службы SQL Server нет прав на чтение и запись перенесенных файлов.
.mdf и .ldf, и перейдем на вкладку Безопасность.NT SERVICE\MSSQLSERVER) предоставлены права Полный доступ (Full Control) к папке и к самим файлам.