При обслуживании и разработке информационных систем «1С:Предприятие» часто требуется оперативно создать копию рабочей базы данных для тестирования, отладки или проверки обновлений. Когда развертывание стандартного бэкапа (.bak) через медленную сеть занимает слишком много времени, возникает вопрос: можно ли скопировать файлы .mdf и .ldf, переименовать их и подключить на том же экземпляре Microsoft SQL Server? Разберем подробно технические нюансы, риски и правила выполнения этой операции, а также способы ускорения стандартных процедур восстановления.
Да, подключить копию базы данных из файлов на тот же сервер возможно. Однако при выполнении этой операции критически важно соблюдать правила безопасности, чтобы не повредить и не перезаписать рабочую базу данных.
Рассмотрим ключевые условия, при которых операция пройдет успешно:
Offline, отсоединена (Detach) либо скопирована с использованием механизма теневого копирования томов (VSS).Attach) необходимо задать новое имя базы данных, не совпадающее с оригиналом.Разберем по шагам, как правильно выполнить операцию подключения файлов через T-SQL, чтобы исключить ошибки:
.mdf и .ldf в целевой папке на диске сервера (например, D:\SQLData\Base_Test_Data.mdf и L:\SQLLog\Base_Test_Log.ldf).CREATE DATABASE ... FOR ATTACH:
CREATE DATABASE [Base_Test]
ON (FILENAME = 'D:\SQLData\Base_Test_Data.mdf'),
(FILENAME = 'L:\SQLLog\Base_Test_Log.ldf')
FOR ATTACH;
Service Broker, если этот механизм используется. Это исключит конфликт очередей и маршрутизации сообщений между рабочей и тестовой базами на одном экземпляре:
ALTER DATABASE [Base_Test] SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [Base_Test] MODIFY FILE (NAME = N'OriginalBase_Data', NEWNAME = N'Base_Test_Data');
ALTER DATABASE [Base_Test] MODIFY FILE (NAME = N'OriginalBase_Log', NEWNAME = N'Base_Test_Log');
После успешного подключения базы данных в MS SQL Server и перед ее регистрацией в кластере серверов «1С:Предприятия» необходимо выполнить защитные настройки:
SID. Для восстановления привязки пользователя usr1cv8 выполняем команду:
USE [Base_Test];
ALTER USER [usr1cv8] WITH LOGIN = [usr1cv8];
Если прямое копирование файлов MDF/LDF сопряжено с рисками или требует остановки рабочей базы, проанализируем штатные способы ускорения резервного копирования и восстановления больших баз (от 100 ГБ и более):
SE_MANAGE_VOLUME_NAME) отключает обнуление выделяемого места на диске при восстановлении. Это ускоряет развертывание базы данных из бэкапа в несколько раз.
BACKUP DATABASE [Base_Work]
TO DISK = 'D:\Backup\Base_Part1.bak',
DISK = 'D:\Backup\Base_Part2.bak',
DISK = 'D:\Backup\Base_Part3.bak',
DISK = 'D:\Backup\Base_Part4.bak'
WITH COMPRESSION, STATS = 10;