Używam skryptu T-SQL, który usuwa bazę danych, a następnie ją przywraca. Skrypt działa na bazie danych SQL Server 2008. Czasami występuje problem z plikiem kopii zapasowej i baza danych utknie w stanie przywracania.Sprawdzanie, czy baza danych przy przywracaniu stanu
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
Następnym razem skrypt uruchamia skrypt generuje komunikat o błędzie
ALTER DATABASE is not permitted while a database is in the Restoring state.
Jaki jest najlepszy sposób, aby sprawdzić, czy baza danych jest w stanie przywracającej przed próbą uruchomienia polecenia ALTER DATABASE?
EDYCJA: Komenda RESTORE DATABASE, którą uruchomiłem, nie korzysta z opcji BEZ ODZYSKIWANIA.
state_description jest teraz state_desc w SQL 2008 r2 – Iain
@Iain: To także state_desc w SQL-Server 2005 –