Скопируйте файл SQL MDF

Я пытаюсь получить копию файла MDF, но сталкиваюсь со стандартным сообщением «файл используется», которое, как я полагаю, является службой SQL, блокирующей его. Можно ли сделать копию файла mdf без остановки службы или каким-либо образом повлиять на пользователей/приложения?

Если нет, то возможно ли создать одноразовую полную резервную копию mdf в месте, отличном от существующего, чтобы он не был заблокирован службой SQL?

(Варианты на этот счет уже задавались на этом сайте, но я не думаю, что это дубликат. Я не пытаюсь переместить базу данных, просто пытаюсь сделать копию mdf - без прерывания операций Live - так что я могу поместить его на свою домашнюю машину и поэкспериментировать с базой данных)


person KrustyGString    schedule 09.10.2013    source источник


Ответы (1)


это позволит вам сделать резервную копию:

BACKUP DATABASE MyDatabase TO DISK = 'W:\DBs\MyDatabase.bak' WITH INIT;

и если вы хотите сделать резервную копию файла журнала, просто добавьте эту команду перед предыдущей:

ALTER DATABASE MyDatabase SET RECOVERY FULL;

Затем, если вы хотите восстановить базу данных из файла резервной копии, попробуйте эту команду:

USE [master]
ALTER DATABASE MyDatabase 
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE
-- The previous command will used to close all connections to the database
-- until you recover it

Restore Database MyDatabase From Disk = 'W:\DBs\MyDatabase.bak' WITH REPLACE;

ALTER DATABASE MyDatabase SET MULTI_USER
-- This will reopen the database for users connections
person Wahid Bitar    schedule 09.10.2013
comment
Изменит ли это что-нибудь в настройках Live? Я беспокоюсь о том, что что-то подобное может изменить текущие настройки/процедуру резервного копирования, и такие вещи, как ALTER DATABASE, заставляют меня нервничать! - person KrustyGString; 09.10.2013
comment
Извините, чтобы уточнить: я бы использовал только команду BACKUP DATABASE. Я предполагаю, что путь .bak указывает на новый файл/местоположение, отличное от текущей запланированной процедуры резервного копирования (которой в любом случае является mdf) и которая полностью независима от обычной процедуры резервного копирования и никоим образом не влияет на нее. Это правильно? - person KrustyGString; 09.10.2013
comment
Да, верно, и если вы не хотите изменять настройки резервного копирования, просто не запускайте код Alter, просто запустите код резервного копирования. - person Wahid Bitar; 09.10.2013
comment
Сделал работу и нормальное резервное копирование работает. Спасибо, было приятно получить подтверждение, что я не буду вмешиваться в систему Live. - person KrustyGString; 10.10.2013