Я запускаю сценарий T-SQL, который удаляет базу данных, а затем восстанавливает ее. Скрипт работает с базой данных SQL Server 2008. Иногда возникает проблема с файлом резервной копии, и база данных застревает в состоянии восстановления.Проверка наличия базы данных в состоянии восстановления
IF EXISTS (SELECT 1 FROM master.dbo.sysdatabases WHERE name = 'dbname')
BEGIN
ALTER DATABASE [dbname]
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE
END
IF EXISTS (SELECT 1 FROM master.dbo.sysdatabases WHERE name = 'dbname')
BEGIN
DROP DATABASE [dbname]
END
RESTORE DATABASE [dbname]
FROM DISK = N'C:\dbname.bak'
WITH FILE = 1,
NOUNLOAD,
STATS = 10
В следующий раз, когда скрипт запускает скрипт генерирует сообщение об ошибке
ALTER DATABASE is not permitted while a database is in the Restoring state.
Что такое лучший способ проверить, если база данных находится в восстанавливающей состоянии, прежде чем пытаться выполнить команду ALTER DATABASE?
EDIT: команда RESTORE DATABASE, с которой я работаю, не использует параметр NO RECOVERY.
state_description теперь state_desc в SQL 2008 r2 – Iain
@Iain: это также state_desc в SQL Server 2005 –