Sto eseguendo uno script T-SQL che elimina un database e quindi lo ripristina. Lo script viene eseguito su un database SQL Server 2008. A volte c'è un problema con il file di backup e il database si blocca nello stato di ripristino.Controllo del database in stato di ripristino
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
La prossima volta che lo script viene eseguito lo script genera il messaggio di errore
ALTER DATABASE is not permitted while a database is in the Restoring state.
Qual è il modo migliore per verificare se il database è in stato di ripristino prima di tentare di eseguire il comando ALTER DATABASE?
MODIFICA: il comando RESTORE DATABASE che sto utilizzando non utilizza l'opzione NO RECOVERY.
state_description è ora state_desc in SQL 2008 r2 – Iain
@Iain: è anche state_desc in SQL-Server 2005 –