Назад | Перейти на главную страницу

Ошибка базы данных SQL Alter - используется процессом контрольной точки

На моем SQL Server 2008 у меня есть задание агента SQL для восстановления базы данных каждую ночь. Процедура:

  1. найти последнюю резервную копию на другом сервере
  2. Убейте все соединения с целевой базой данных
  3. Восстановление целевой базы данных с заменой, восстановлением

На прошлых выходных это не удалось, потому что база данных использовалась системным процессом (контрольная точка 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