Ako skrátiť protokoly transakcií v serveri SQL Server 2012

Transakčné protokoly v serveri SQL Server 2012 nevyhnutne rastú v priebehu času a v určitom okamihu môžu zaberať všetok dostupný diskový priestor. Aby sa tomu zabránilo, SQL Server má nástroje na skrátenie protokolov transakcií, aby uvoľnil miesto pre opakované použitie. Protokoly sa orezávajú automaticky v závislosti od použitého modelu obnovy:

  • prostý (jednoduchý model) - protokoly sa po dosiahnutí medzníka skrátia
  • plne (model úplného obnovenia) - po vykonaní zálohy protokolov, ak bol kontrolný bod dosiahnutý po poslednej zálohe

Existujú však situácie, keď automatické orezávanie protokolov nefunguje tak, ako by malo a protokolové súbory zaberajú celý priestor na disku. Spravidla sa to stáva neočakávane a správca musí urýchlene vyriešiť problém uvoľnenia miesta na disku.

V tomto prípade sa pri pripájaní k databáze MS SQL objaví nasledujúca chyba:

Poskytovateľ Microsoft OLE pre SQL Server: Denník transakcií pre databázu „DBName“ je plný. Ak chcete zistiť, prečo sa priestor v denníku nedá znovu použiť, prečítajte si stĺpec log_reuse_wait_desc sys.database.
HRESULT = 80040E14, SQLSTATE = 4 2000, natívny = 9002

To znamená, že denníky transakcií zaberajú všetky voľné miesto a SQL už nemôže zapisovať protokolové súbory. V tejto situácii môžete protokoly transakcií skrátiť manuálne.

Táto situácia sa zvyčajne môže vyskytnúť pri použití modelu úplnej obnovy (plná). V tomto modeli nie sú protokolové súbory skrátené, kým sa do zálohy nedostanú všetky transakčné protokoly. Tým sa zabezpečí nepretržitá postupnosť čísel záznamov (LSN) v protokole. Ak chcete protokoly skrátiť, musíte vykonať úplnú zálohu databázy alebo (rýchlejšie) dočasne zmeniť model obnovy na Simple.

Ak chcete orezať protokol transakcií, spustite konzolu SQL Server Management Studio (SSMS), vyberte databázu, ktorú potrebujete, a otvorte jej vlastnosti v kontextovej ponuke. Potom prejdite na kartu možnosti a zmeňte model obnovy databázy (model obnovy) na Simple.

Potom v kontextovej ponuke databázy vyberte položku Úlohy -> Zmenšiť -> Súbors. V teréne Typ súboru vyberte Denník a do poľa Názov súboru - názov súboru denníka. V teréne Zmršťovacia akcia je potrebné špecifikovať Pred uvoľnením nevyužitého priestoru reorganizujte stránky, a zadajte veľkosť na zmenšenie súboru a kliknite na tlačidlo OK.

Po orezaní protokolu znova prepnite na úplný model obnovy (úplnej) databázy.

Všetky vyššie uvedené operácie je možné vykonávať pomocou jednoduchého skriptu z produktu Query Analizer (skript je spustený na serveri SQL Server od verzie 2008).
POUŽÍVAJTE „DBName“
ALTER DATABASE "DBName" SET RECOVERY SIMULE
DBCC SHRINKFILE ("DBName", "Veľkosť, do ktorej sa má rezať protokol");
ALTER DATABASE „DBName“ SET RECOVERY FULL

rada. Po orezaní protokolov transakcií na serveri SQL Server sa dôrazne odporúča, aby ste vytvorili úplnú zálohu databázy, as v prípade poškodenia protokolových súborov nebudete môcť obnoviť databázu pomocou transakčných súborov.