На самом деле я пытаюсь создать сценарий (в Sql Server 2008) для восстановления одной базы данных из одного файла резервной копии. Я ввел следующий код и получаю сообщение об ошибке -
Msg 3101, Level 16, State 1, Line 3
Exclusive access could not be obtained because
the database is in use.
Msg 3013, Level 16, State 1, Line 3
RESTORE DATABASE is terminating abnormally.
Как мне решить эту проблему?
IF DB_ID('AdventureWorksDW') IS NOT NULL
BEGIN
RESTORE DATABASE [AdventureWorksDW]
FILE = N'AdventureWorksDW_Data'
FROM
DISK = N'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\Backup\AdventureWorksDW.bak'
WITH FILE = 1,
MOVE N'AdventureWorksDW_Data'
TO N'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\DATA\AdventureWorksDW.mdf',
MOVE N'AdventureWorksDW_Log'
TO N'C:\Program Files\Microsoft SQL Server\
MSSQL10_50.SS2008\MSSQL\DATA\AdventureWorksDW_0.LDF',
NOUNLOAD, STATS = 10
END
Ответы:
Я предполагаю, что если вы восстанавливаете базу данных, вам не нужны никакие существующие транзакции в этой базе данных. Правильно? Если да, то это должно сработать для вас:
Теперь нужно знать еще об одном пункте. После того, как вы установите базу данных в однопользовательский режим, кто-то другой может попытаться подключиться к базе данных. В случае успеха вы не сможете продолжить восстановление. Это гонка! Я предлагаю запустить все три оператора одновременно.
источник
USE master
, что нетUSER master
.ALTER DATABASE [AdventureWorksDW] SET MULTI_USER
в конце, чтобы убедиться, что база данных вернулась в обычный многопользовательский режим.SINGLE_USER
резервная копия базы данных была в режиме во время резервного копирования, она будет вSINGLE_USER
режиме, когда резервная копия будет восстановлена. Если он был вMULTI_USER
режиме во время резервного копирования, он будет вMULTI_USER
режиме после восстановления. Вы подумали: это определенно стоит проверить после завершения восстановления. Вы также можете запустить RESTORE HEADERONLY на резервном носителе и проверить столбецIsSingleUser
или выполнить побитовые вычисленияFlags
.источник
выполните этот запрос перед восстановлением базы данных:
и этот после восстановления:
источник
Для меня решение:
Установите флажок «Перезаписать существующую базу данных (С ЗАМЕНИТЬ)» на вкладке «Опции» слева.
Снимите все флажки со всех остальных опций.
Выберите исходную и целевую базы данных.
Щелкните ОК.
Вот и все.
источник
Используйте следующий сценарий, чтобы найти и закрыть все открытые подключения к базе данных перед восстановлением базы данных.
Надеюсь, это поможет ...
источник
Я думаю, вам просто нужно установить db в однопользовательский режим, прежде чем пытаться восстановить, как показано ниже, просто убедитесь, что вы используете
master
источник
Я просто перезапустил службу sqlexpress, а затем восстановление завершилось нормально
источник
источник
Решение 1. Перезапустите службы SQL и попытайтесь восстановить БД. Решение 2. Перезапустите систему / сервер и попытайтесь восстановить БД. Решение 3. Верните текущую БД, удалите текущую / целевую БД и попытайтесь восстановить БД.
источник
Установка БД в однопользовательский режим у меня не сработала, но перевод ее в автономный режим, а затем возврат в оперативный режим действительно сработал. Он находится в контекстном меню базы данных, в разделе «Задачи».
Обязательно установите флажок «Отменить все активные подключения» в диалоговом окне.
источник
Вот способ восстановления базы данных от производства к разработке:
ПРИМЕЧАНИЕ. Я делаю это через SSAS, чтобы ежедневно запускать производственную базу данных в разработку:
Шаг 1. Удалите резервную копию предыдущего дня в разработке:
Шаг 2: Скопируйте производственную базу данных в разработку:
Шаг 3. Восстановите, запустив сценарий .sql.
Код, который находится в файле AE11_Restore.sql:
источник
Я получил эту ошибку, когда на диске не хватало места для восстановления Db. Очистка места решила эту проблему.
источник
перевод исходной базы данных в автономный режим работал для меня
источник