Estoy ejecutando un script T-SQL que descarta una base de datos y luego la restaura. La secuencia de comandos se ejecuta en una base de datos de SQL Server 2008. A veces hay un problema con el archivo de copia de seguridad y la base de datos se atasca en el estado de restauración.Comprobando si la base de datos está restaurando el estado
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 próxima vez que el script se ejecuta la secuencia de comandos genera el mensaje de error
ALTER DATABASE is not permitted while a database is in the Restoring state.
¿Cuál es la mejor manera de comprobar si la base de datos se encuentra en estado de restauración antes de intentar ejecutar el comando ALTER DATABASE?
EDITAR: El comando RESTORE DATABASE que estoy ejecutando no utiliza la opción NO RECOVERY.
state_description ahora es state_desc en SQL 2008 r2 – Iain
@Iain: también es state_desc en SQL-Server 2005 –