Po havárii serveru a obnově systému ze zálohy zůstali databáze ve stavu Recovery Pending a nebylo možné je spravovat. Zjistil jsem, že problémem byl rozbouraný soubor s SQL logama. 

 

 

Tímto scriptem lze spustit opravu databáze, která vytvoří nový log soubor.

 

ALTER DATABASE [DBName] SET EMERGENCY;

GO

ALTER DATABASE [DBName] set single_user

GO

DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;

GO 

ALTER DATABASE [DBName] set multi_user

GO

 

Druhý způsob je odpojení databáze a znovu připojení fyzického souboru s databází (mdf). Log soubory se potom znovu vytvoří.

ALTER DATABASE [DBName] SET EMERGENCY;

ALTER DATABASE [DBName] set multi_user

EXEC sp_detach_db ‘[DBName]’

EXEC sp_attach_single_file_db @DBName = ‘[DBName]’, @physname = N'[mdf path]’

 

 

V mém případě tento stav nastal po kompletní obnově systému ze zálohy Windows Server Backup. Data v obnovené databázi budou zcela jistě nekonzistentní (ztracená data z otevřených transakcí atd), protože v době zálohy běží na SQL časově náročné výpočty např.DB kostky a jiné . Proto jsem po obnově serveru a zprovoznění databází provedl obnovu těchto databází ze zálohy.