На моем SQL Server 2008 у меня есть задание агента SQL для восстановления базы данных каждую ночь. Процедура:
На прошлых выходных это не удалось, потому что база данных использовалась системным процессом (контрольная точка spid 11). так как я не мог убить системный процесс, я исправил это, перезапустив sql server. Он также не удался в эти выходные с той же ошибкой (процесс проверки в этой базе данных, как из sp_who
) и когда я бегу:
SELECT session_id,request_id,command,status,start_time
FROM sys.dm_exec_requests
WHERE session_id = 11
Это показывает:
11 0 CHECKPOINT background 2010-04-06 10:17:49.103
Я не могу перезапускать сервер каждый раз, когда он выходит из строя.
Может ли кто-нибудь помочь мне исправить это?
заранее спасибо
Manjot
Не убивайте SPID меньше 50! Это системные процессы
Чтобы узнать, можно ли вывести БД из состояния "восстановление", попробуйте
RESTORE DATABASE MyDB WITH RECOVERY
Редактировать после комментария
Предполагая, что вы хотите восстановить БД и не заботитесь о ее сохранении ...
Остановите SQL Server, переместите MDF / LDF в другое место, запустите SQL Server.
БД переходит в автономный режим (я забыл точный статус). Потом можешь уронить, восстановить
исправлено - так как восстанавливалось ежедневно. Я исключил его из планов обслуживания по повторному индексированию, dbcc checkdb, обновлению статистики и т. д.
несмотря на то, что они выполнялись по отдельному графику, проблема была решена за исключением базы данных.
Вместо того, чтобы убивать открытые соединения, попробуйте
ALTER DATABASE myDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
Затем выполните восстановление, а еще лучше - сбросьте, а затем восстановите.
После того, как вы закончите, не забудьте вернуть базу данных в предыдущее состояние:
ALTER DATABASE myDatabase SET MULTI_USER