Я запускаю T-SQL script, который удаляет базу данных, а затем восстанавливает ее. script работает с базой данных 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
В следующий раз, когда script запускает script, генерируется сообщение об ошибке
ALTER DATABASE is not permitted while a database is in the Restoring state.
Каков наилучший способ проверить, находится ли база данных в состоянии восстановления, прежде чем пытаться запустить команду ALTER DATABASE?
EDIT: команда RESTORE DATABASE, которую я запускаю, не использует параметр NO RECOVERY.