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.