Я намагаюся отримати копію файлу MDF, аленатрапляючи на стандартне повідомлення "файл використовується", яке, на мою думку, є службою SQL, яка тримає на собі замок. Чи можна зробити копію mdf-файлу, не зупиняючи службу чи не впливаючи на користувачів / програми?
Якщо ні, чи можливо створити одноразовий повний резервний файл mdf в іншому місці, ніж існуюче, щоб його не заблокувала служба SQL?
(Варіанти цього запитували на цьому сайтівже, але я не думаю, що це дублікат. Я не намагаюся перенести базу даних, просто намагаюся зробити копію mdf - не перериваючи операції в реальному часі - щоб я міг розмістити її на своїй машині розробника вдома і грати навколо з базою даних)
Відповіді:
1 для відповіді № 1це дозволить вам зробити резервну копію:
BACKUP DATABASE MyDatabase TO DISK = "W:DBsMyDatabase.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:DBsMyDatabase.bak" WITH REPLACE;
ALTER DATABASE MyDatabase SET MULTI_USER
-- This will reopen the database for users connections