В практике администраторов 1С и системных администраторов иногда случаются критические сбои, после которых в распоряжении остается только основной файл данных — .mdf, в то время как файл лога транзакций .ldf оказывается поврежден или утерян. Рассмотрим подробнее, как выйти из этой ситуации, какие шаги предпринять для спасения данных и на какие нюансы стоит обратить внимание при подключении восстановленной базы к серверу 1С.
Прежде чем приступать к любым манипуляциям с файлами базы данных, разберем золотое правило восстановления: никогда не проводите эксперименты над единственным экземпляром данных. Проанализируем ситуацию: если у вас остался только один файл, любое неудачное действие SQL-сервера может окончательно его испортить.
.mdf (это важнее, чем обычное восстановление баз из резервной копии).Выясним причину, по которой SQL Server не может просто «подцепить» файл. Базе данных жизненно необходим лог транзакций для обеспечения целостности. Если его нет, нам нужно заставить сервер создать новый пустой лог. Рассмотрим основной метод с использованием команды REBUILD LOG.
Запустим SQL Server Management Studio (SSMS), создадим новый запрос и выполним следующий скрипт (предварительно подставив свои пути и названия):
USE [master];
GO
-- Пытаемся приаттачить базу и пересоздать лог
CREATE DATABASE [testdb] ON
(FILENAME = 'E:\SQL_bases\testdb.mdf')
FOR ATTACH_REBUILD_LOG;
GO
Если этот метод не срабатывает из-за того, что база была завершена некорректно (состояние Dirty Shutdown), воспользуемся более жестким методом принудительного пересоздания. Проанализируем пример кода:
-- Переводим базу в режим EMERGENCY
ALTER DATABASE [testdb] SET EMERGENCY;
GO
-- Пересоздаем лог на новом месте
ALTER DATABASE [testdb] REBUILD LOG ON (
NAME='testdb_LOG',
FILENAME='E:\SQL_bases\testdb_new_LOG.ldf'
);
GO
-- Возвращаем базу в многопользовательский режим
ALTER DATABASE [testdb] SET MULTI_USER;
GO
Иногда после пересоздания лога база может перейти в статус SUSPECT. Это означает, что SQL Server сомневается в согласованности данных. Разберем по шагам, как вывести базу из этого состояния. Нам потребуется режим EMERGENCY, который делает базу доступной только для чтения администратору и отключает проверку логов при запуске.
После успешного подключения базы обязательно выполним проверку на логические ошибки. Посмотрим на пример команды:
DBCC CHECKDB ('testdb') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Если проверка выявила ошибки, это последствия потери файла .ldf. В самом крайнем случае используется параметр REPAIR_ALLOW_DATA_LOSS, но помните: это может привести к удалению части ваших данных для восстановления структуры таблиц.
Проанализируем специфику платформ. Если вы восстанавливаете очень старую базу 1С:Предприятие 7.7, помните, что одного MDF-файла недостаточно для работы программы. Вам обязательно потребуется файл метаданных 1Cv7.MD, который содержит структуру конфигурации. Без него SQL-база — это просто набор таблиц без описания логики.
Для версии 1С 8.3 критически важно, чтобы внутренняя версия структуры MDF-файла совпадала или была ниже версии установленного SQL Server. Помните: вы не сможете подключить файл от SQL 2019 к серверу SQL 2016.
Представим ситуацию: база успешно поднята на SQL-сервере, она в статусе Online, но при попытке добавить её в консоль администрирования 1С возникает ошибка: "Отсутствуют рабочие процессы". Рассмотрим подробнее, почему это происходит.
Выясним причину: часто после восстановления сервера системные администраторы забывают пробросить лицензионный ключ (программный или аппаратный) для сервера 1С. Без действующей лицензии сервер 1С не может запустить рабочие процессы (rphost), и, соответственно, вы не сможете зайти в свойства информационной базы или подключиться к ней.
План действий в консоли 1С:
1C:Enterprise 8.3 Server Agent запущена.Simple (Простой), это вполне допустимо для работы 1С, но не забудьте настроить регулярные бэкапы.После того как база стала доступна в консоли 1С, работа еще не закончена. Разберем, что нужно сделать внутри самой 1С. Поскольку мы восстанавливали базу без лога транзакций, могли возникнуть нарушения ссылочной целостности (последние незавершенные операции в 1С могли не записаться в MDF).
Обязательно запустим Тестирование и исправление (ТиИ) в Конфигураторе:
Таким образом, мы пошагово разобрали процесс спасения базы. Главное — сохранять спокойствие, работать с копиями и последовательно проверять состояние базы на каждом уровне: от файловой системы и прав доступа до логической целостности объектов 1С.