При работе с крупными информационными базами 1С на СУБД MS SQL Server часто возникает необходимость распределения данных по нескольким файлам или дискам для оптимального распределения нагрузки. В этом случае к основному файлу данных .mdf добавляются вторичные файлы данных .ndf и файл журнала транзакций .ldf. Однако при переносе, удалении базы из списка или настройке путей можно столкнуться с ситуацией, когда SQL Server отказывается монтировать (Attach) базу данных и выдает ошибки формата или отсутствия файлов.
В данной статье мы разберем причину возникновения таких сбоев, выясним, влияют ли расширения файлов на работу СУБД, и рассмотрим алгоритм решения проблемы при прикреплении базы данных к SQL Server.
Рассмотрим распространенное заблуждение: часто специалисты считают, что создание файла с расширением .ndf вместо .mdf является ошибкой, из-за которой база данных выходит из строя. Проанализируем назначение этих расширений в архитектуре MS SQL Server:
.ndf является официально рекомендуемым стандартом Microsoft для всех дополнительных файлов данных.Таким образом, само по себе расширение .ndf не является ошибкой. Ошибки при монтировании базы обычно связаны с тем, что SQL Server хранит служебную информацию о логических именах, первоначальных путях и GUID всех связанных файлов прямо в заголовке первичного файла .mdf. Если при операции Attach выбран не тот главный файл .mdf или указаны не все связанные файлы .ndf, сервер не сможет собрать базу данных.
Если база данных была случайно удалена из списка SQL Server Management Studio (SSMS) или перемещена на другой диск, разберем по шагам порядок ее восстановления через монтирование:
.mdf. Важно: убедитесь, что выбирается именно тот файл .mdf, который соответствует восстанавливаемой базе, а не временный или старый файл из другой директории..mdf MS SQL Server автоматически прочитает его заголовок и отобразит в нижней таблице "Database details" список всех связанных вторичных файлов (.ndf) и файлов журнала (.ldf).Рассмотрим ситуацию, когда первичный файл .mdf и все вторичные файлы .ndf доступны, но файл журнала транзакций .ldf отсутствует или поврежден. В этом случае обычное прикрепление завершится ошибкой. Пересоздать журнал транзакций можно с помощью специального T-SQL запроса:
CREATE DATABASE [Наша_База_1С]
ON (FILENAME = 'D:\SQLData\UPP_main.mdf'),
(FILENAME = 'D:\SQLData\UPP_data1.ndf'),
(FILENAME = 'E:\SQLData\UPP_data2.ndf')
FOR ATTACH_REBUILD_LOG;
Данный запрос заново сформирует файл журнала транзакций при условии, что на момент отключения база данных находилась в согласованном состоянии (Clean Shutdown).
Если при попытке прикрепить базу данных SQL Server выдает ошибки повреждения структуры и не позволяет открыть доступ к данным 1С, проанализируем порядок действий по переводу базы в аварийный режим:
.mdf и .ndf.RECOVERY_PENDING или SUSPECT).
-- Перевод базы в аварийный однопользовательский режим
ALTER DATABASE [Наша_База_1С] SET EMERGENCY;
ALTER DATABASE [Наша_База_1С] SET SINGLE_USER;
-- Проверка и исправление структуры с возможной потерей данных
DBCC CHECKDB ('Наша_База_1С', REPAIR_ALLOW_DATA_LOSS);
-- Возврат базы в многопользовательский режим
ALTER DATABASE [Наша_База_1С] SET MULTI_USER;
После успешного перевода базы в режим EMERGENCY появится доступ к таблицам в режиме "только для чтения". Это позволит выгрузить актуальные документы и справочники в новую чистую базу данных 1С.
Разберем основные правила безопасности при проведении обслуживающих работ на сервере СУБД:
.bak) или выгрузку 1С (файл .dt)..mdf/.ndf на диске без предварительного изменения их логических имен и путей через команды T-SQL ALTER DATABASE MODIFY FILE.