Transakční protokoly v serveru SQL Server 2012 nevyhnutelně rostou v čase a v určitém okamžiku mohou zabírat veškerý dostupný diskový prostor. Chcete-li se této situaci vyhnout, SQL Server má nástroje pro zkrácení protokolů transakcí uvolnit místo pro opakované použití. Protokoly jsou oříznuty automaticky v závislosti na použitém modelu obnovy:
- Jednoduché (jednoduchý model) - protokoly jsou zkráceny po dosažení milníku
- Plné (úplný model obnovy) - po provedení zálohy protokolů, pokud byl kontrolní bod dosažen po poslední záloze
Existují však situace, kdy automatické oříznutí protokolů nefunguje tak, jak by mělo, a soubory protokolu zabírají veškerý prostor na disku. Zpravidla se to stane neočekávaně a správce musí naléhavě vyřešit problém uvolnění místa na disku.
V tomto případě se při připojování k databázi MS SQL objeví následující chyba:
Poskytovatel Microsoft OLE pro SQL Server: Protokol transakcí pro databázi „DBName“ je plný. Chcete-li zjistit, proč nelze místo v protokolu znovu použít, viz sloupec log_reuse_wait_desc sys.databaseHRESULT = 80040E14, SQLSTATE = 4 2000, nativní = 9002
To znamená, že protokoly transakcí zabíraly veškeré volné místo a SQL již nemůže zapisovat soubory protokolu. V této situaci můžete protokoly transakcí zkrátit ručně.
Obvykle k této situaci může dojít při použití modelu úplné obnovy (Full). V tomto modelu nejsou protokolové soubory zkráceny, dokud se všechny transakční protokoly nedostanou do zálohy. Tím je zajištěna souvislá posloupnost čísel záznamů (LSN) v protokolu. Chcete-li tedy zkrátit protokoly, musíte provést úplnou zálohu databáze nebo (rychlejší) dočasně změnit model obnovy na Simple.
Chcete-li tedy oříznout protokol transakcí, spusťte konzolu SQL Server Management Studio (SSMS), vyberte databázi, kterou potřebujete, a otevřete její vlastnosti v místní nabídce. Poté přejděte na kartu Možnosti a změňte model obnovy databáze (model obnovy) na Simple.
Poté v kontextové nabídce databáze vyberte Úkoly -> Zmenšit -> Soubors. Na poli Typ souboru vyberte Protokol a v poli Název souboru - název souboru protokolu. Na poli Smršťovací akce je třeba specifikovat Před uvolněním nevyužitého místa proveďte reorganizaci stránek, a určete velikost pro zmenšení souboru a klikněte Dobře.
Po oříznutí protokolu znovu přepněte do úplného (úplného) modelu obnovy databáze.
Všechny výše popsané operace lze provádět pomocí jednoduchého skriptu z produktu Query Analizer (skript běží na serveru SQL Server od verze 2008).POUŽÍVEJTE „DBName“
ALTER DATABASE "DBName" SET RECOVERY SIMPLE
DBCC SHRINKFILE ("DBName", "Velikost, do které se má řezat protokol");
ALTER DATABASE "DBName" SET RECOVERY FULL