Как правильно присоединить файлы базы данных MDF и LDF к MS SQL Server

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

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

Рассмотрим по шагам, как правильно выполнить эту процедуру через графический интерфейс, с помощью SQL-скриптов и какие дополнительные действия обязательны для обеспечения стабильной работы пользователей.

Способ 1. Присоединение базы через SQL Server Management Studio (SSMS)

Разберем наиболее простой интерактивный способ восстановления работы базы данных с использованием графической консоли управления MS SQL Server.

  1. Подготовка файлов: Перед началом работы обязательно создадим резервные копии полученных файлов .mdf и .ldf. Скопируем их в целевой каталог хранения баз данных SQL-сервера. Если исходная поврежденная база еще зарегистрирована на сервере, изменим имена файлов восстановленной базы, чтобы избежать конфликтов.
  2. Запуск консоли: Откроем SQL Server Management Studio и подключимся к нужному экземпляру СУБД с правами администратора (например, под учетной записью sa).
  3. Вызов функции монтирования: В дереве объектов обозревателя решений (Object Explorer) кликнем правой кнопкой мыши по узлу Базы данных (Databases) и выберем пункт меню Присоединить... (Attach...).
  4. Выбор файлов: В открывшемся окне нажмем кнопку Добавить (Add) и укажем путь к файлу данных .mdf. Файл журнала транзакций .ldf при этом подтянется автоматически, если он расположен в том же каталоге.
  5. Корректировка параметров: В нижней части окна проверим пути к файлам и имя создаваемой базы данных. При необходимости переименуем базу прямо в интерфейсе и нажмем ОК.

Способ 2. Присоединение базы данных с помощью T-SQL скрипта

Проанализируем альтернативный вариант, который позволяет выполнить присоединение базы данных с помощью прямого запроса 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С:Предприятия

Выясним, как сделать так, чтобы с монтированной базой смогли работать пользователи 1С. Простого присоединения файлов на уровне MS SQL Server недостаточно — необходимо прописать информационную базу в консоли администрирования кластера 1С:Предприятия.

  1. Откроем Управление кластером серверов 1С:Предприятия.
  2. Перейдем в раздел Информационные базы и создадим новую запись информационной базы.
  3. В параметрах подключения укажем:
    • Сервер БД: имя экземпляра MS SQL Server;
    • Тип СУБД: MS SQL Server;
    • База данных: точное имя базы на SQL-сервере (указанное при присоединении);
    • Пользователь БД: учетная запись SQL-сервера (например, sa) и пароль.
  4. Если файлы подменялись для уже существующей записи информационной базы, перезапустим службу агента 1С (ragent) для очистки кэша процессов rphost и завершения подвисших сеансов.

Проверка целостности и устранение повреждений (DBCC CHECKDB)

Посмотрим на важный этап, который нельзя пропускать после аварийных сбоев питания. В файле данных могли остаться незавершенные транзакции или поврежденные страницы. Обязательно выполним проверку логической и физической целостности структуры базы данных:


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 нет прав на чтение и запись перенесенных файлов.

  1. Откроем свойства каталога, в котором лежат файлы .mdf и .ldf, и перейдем на вкладку Безопасность.
  2. Убедимся, что сервисной учетной записи MS SQL Server (например, NT SERVICE\MSSQLSERVER) предоставлены права Полный доступ (Full Control) к папке и к самим файлам.
  3. Сохраним изменения и повторим попытку присоединения базы данных.
← На главную