{"id":5890,"date":"2026-06-16T16:15:28","date_gmt":"2026-06-16T16:15:28","guid":{"rendered":"https:\/\/cloudsave.app\/knowledge-base\/mssql-transaction-log-full-recovery\/"},"modified":"2026-06-16T16:42:10","modified_gmt":"2026-06-16T16:42:10","slug":"pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy","status":"publish","type":"post","link":"https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/","title":{"rendered":"Pln\u00fd transak\u010dn\u00ed log MSSQL: Strategie prevence a rychl\u00e9 obnovy"},"content":{"rendered":"<p>Pro datab\u00e1zov\u00e9 administr\u00e1tory (DBA) a DevOps in\u017een\u00fdry spravuj\u00edc\u00ed Microsoft SQL Server existuje jen m\u00e1lo upozorn\u011bn\u00ed, kter\u00e1 vyvol\u00e1vaj\u00ed tak okam\u017eitou \u00fazkost jako Chyba 9002: <em>Transak\u010dn\u00ed protokol pro datab\u00e1zi \u201aX\u2018 je pln\u00fd<\/em>. Kdy\u017e se transak\u010dn\u00ed protokol zapln\u00ed a nem\u016f\u017ee d\u00e1le r\u016fst, datab\u00e1ze se fakticky p\u0159epne do re\u017eimu jen pro \u010dten\u00ed. V\u0161echny operace <code>INSERT<\/code>, <code>UPDATE<\/code> a <code>DELETE<\/code> se zastav\u00ed, transakce aplikac\u00ed sel\u017eou a produkce se zcela zastav\u00ed.<\/p>\n<p>Pochopen\u00ed z\u00e1kladn\u00ed architektury transak\u010dn\u00edho protokolu SQL Serveru, p\u0159esn\u00e1 diagnostika hlavn\u00ed p\u0159\u00ed\u010diny a prov\u00e1d\u011bn\u00ed rychl\u00fdch postup\u016f obnovy jsou kritick\u00fdmi dovednostmi pro udr\u017een\u00ed vysok\u00e9 dostupnosti. Tento komplexn\u00ed pr\u016fvodce zkoum\u00e1 mechanismy transak\u010dn\u00edho protokolu, jak vy\u0159e\u0161it pln\u00fd protokol v nouzov\u00e9 situaci a jak\u00e9 jsou osv\u011bd\u010den\u00e9 architektonick\u00e9 postupy, aby se to ji\u017e neopakovalo.<\/p>\n<h2>Pochopen\u00ed architektury transak\u010dn\u00edho protokolu SQL Serveru<\/h2>\n<p>Abyste mohli efektivn\u011b \u0159e\u0161it probl\u00e9my s pln\u00fdm transak\u010dn\u00edm protokolem, mus\u00edte nejprve pochopit, jak SQL Server zapisuje a spravuje data.<\/p>\n<h3>Write-Ahead Logging (WAL)<\/h3>\n<p>SQL Server pou\u017e\u00edv\u00e1 protokol Write-Ahead Logging (WAL). Kdykoli dojde k \u00faprav\u011b dat, zm\u011bna se nejprve zap\u00ed\u0161e do transak\u010dn\u00edho protokolu v pam\u011bti a pot\u00e9 se zap\u00ed\u0161e do fyzick\u00e9ho souboru protokolu na disku, ne\u017e jsou skute\u010dn\u00e9 datov\u00e9 str\u00e1nky aktualizov\u00e1ny v datab\u00e1zov\u00fdch souborech (MDF\/NDF). To zaru\u010duje shodu s ACID (atomicitu, konzistenci, izolaci, trvanlivost), co\u017e zaji\u0161\u0165uje, \u017ee v p\u0159\u00edpad\u011b hav\u00e1rie m\u016f\u017ee SQL Server transakce znovu p\u0159ehr\u00e1t (roll forward) nebo vr\u00e1tit zp\u011bt (roll back).<\/p>\n<h3>Virtu\u00e1ln\u00ed soubory protokolu (VLF) a cyklick\u00e9 protokolov\u00e1n\u00ed<\/h3>\n<p>Intern\u011b je fyzick\u00fd soubor transak\u010dn\u00edho protokolu (LDF) rozd\u011blen na men\u0161\u00ed logick\u00e9 segmenty naz\u00fdvan\u00e9 virtu\u00e1ln\u00ed soubory protokolu (VLF). Transak\u010dn\u00ed protokol funguje cyklicky. Jak jsou z\u00e1znamy protokolu zapisov\u00e1ny, zapl\u0148uj\u00ed jeden VLF a p\u0159ech\u00e1zej\u00ed na dal\u0161\u00ed.<\/p>\n<p>Kdy\u017e protokol dos\u00e1hne konce fyzick\u00e9ho souboru, pokus\u00ed se vr\u00e1tit na za\u010d\u00e1tek. M\u016f\u017ee v\u0161ak p\u0159epsat VLF pouze tehdy, pokud je tento VLF ozna\u010den jako <strong>neaktivn\u00ed<\/strong>. Pokud jsou v\u0161echny VLF aktivn\u00ed (co\u017e znamen\u00e1, \u017ee obsahuj\u00ed z\u00e1znamy protokolu, kter\u00e9 SQL Server st\u00e1le vy\u017eaduje), protokol se nem\u016f\u017ee vr\u00e1tit na za\u010d\u00e1tek. Pokud je povoleno automatick\u00e9 zv\u011bt\u0161ov\u00e1n\u00ed a je k dispozici m\u00edsto na disku, fyzick\u00fd soubor se zv\u011bt\u0161\u00ed. Pokud je disk pln\u00fd nebo je automatick\u00e9 zv\u011bt\u0161ov\u00e1n\u00ed omezeno, naraz\u00edte na chybu 9002.<\/p>\n<h3>Zkr\u00e1cen\u00ed protokolu (Truncation) vs. zmen\u0161en\u00ed protokolu (Shrinking)<\/h3>\n<p>\u010cast\u00fdm omylem je, \u017ee zkr\u00e1cen\u00ed protokolu zmen\u0161\u00ed fyzickou velikost souboru.<br \/>\n*   <strong>Zkr\u00e1cen\u00ed protokolu (Log Truncation):<\/strong> Proces ozna\u010den\u00ed aktivn\u00edch VLF jako neaktivn\u00edch, \u010d\u00edm\u017e se prostor uvoln\u00ed pro op\u011btovn\u00e9 pou\u017eit\u00ed. <em>Nezmen\u0161uje<\/em> velikost souboru LDF na disku.<br \/>\n*   <strong>Zmen\u0161en\u00ed protokolu (Log Shrinking):<\/strong> Proces fyzick\u00e9ho zmen\u0161en\u00ed velikosti souboru LDF a vr\u00e1cen\u00ed prostoru opera\u010dn\u00edmu syst\u00e9mu.<\/p>\n<p>V modelu \u00fapln\u00e9ho obnoven\u00ed (Full Recovery) doch\u00e1z\u00ed ke zkr\u00e1cen\u00ed protokolu <em>pouze<\/em> tehdy, kdy\u017e je \u00fasp\u011b\u0161n\u011b dokon\u010deno z\u00e1lohov\u00e1n\u00ed transak\u010dn\u00edho protokolu (za p\u0159edpokladu, \u017ee protokol nedr\u017e\u00ed aktivn\u00ed \u017e\u00e1dn\u00e9 jin\u00e9 procesy).<\/p>\n<h2>Diagnostika chyby \u201eTransak\u010dn\u00ed protokol je pln\u00fd\u201c (Chyba 9002)<\/h2>\n<p>Kdy\u017e je protokol pln\u00fd, va\u0161\u00edm prvn\u00edm krokem by nem\u011blo b\u00fdt bezhlav\u00e9 p\u0159id\u00e1v\u00e1n\u00ed m\u00edsta na disku nebo zmen\u0161ov\u00e1n\u00ed soubor\u016f. Mus\u00edte identifikovat, <em>pro\u010d<\/em> protokol nelze zkr\u00e1tit. SQL Server poskytuje vestav\u011bn\u00fd mechanismus, kter\u00fd v\u00e1m p\u0159esn\u011b \u0159ekne, co br\u00e1n\u00ed op\u011btovn\u00e9mu pou\u017eit\u00ed protokolu prost\u0159ednictv\u00edm zobrazen\u00ed katalogu <code>sys.databases<\/code>.<\/p>\n<p>Spus\u0165te n\u00e1sleduj\u00edc\u00ed p\u0159\u00edkaz T-SQL pro identifikaci \u00fazk\u00e9ho hrdla:<\/p>\n<pre><code class=\"language-sql\">SELECT \n    name AS DatabaseName, \n    recovery_model_desc AS RecoveryModel, \n    log_reuse_wait_desc AS LogReuseWaitReason\nFROM sys.databases\nWHERE name = 'YourDatabaseName';\n<\/code><\/pre>\n<p>Aktu\u00e1ln\u00ed vyu\u017eit\u00ed prostoru va\u0161ich transak\u010dn\u00edch protokol\u016f m\u016f\u017eete tak\u00e9 zkontrolovat pomoc\u00ed:<\/p>\n<pre><code class=\"language-sql\">DBCC SQLPERF(LOGSPACE);\n<\/code><\/pre>\n<h3>B\u011b\u017en\u00e9 stavy <code>log_reuse_wait_desc<\/code><\/h3>\n<ol>\n<li><strong>LOG_BACKUP:<\/strong> Datab\u00e1ze je v modelu obnoven\u00ed Full nebo Bulk-Logged a v posledn\u00ed dob\u011b nebyla provedena z\u00e1loha transak\u010dn\u00edho protokolu. Toto je nej\u010dast\u011bj\u0161\u00ed p\u0159\u00ed\u010dina.<\/li>\n<li><strong>ACTIVE_TRANSACTION:<\/strong> Dlouhotrvaj\u00edc\u00ed transakce (nap\u0159. masivn\u00ed p\u0159estavba indexu nebo zapomenut\u00e1 nepotvrzen\u00e1 transakce) udr\u017euje protokol aktivn\u00ed.<\/li>\n<li><strong>REPLICATION \/ CDC:<\/strong> Je povolena transak\u010dn\u00ed replikace nebo Change Data Capture (CDC) a agent \u010dte\u010dky protokolu (Log Reader Agent) je\u0161t\u011b nezpracoval transakce.<\/li>\n<li><strong>AVAILABILITY_REPLICA:<\/strong> Ve skupin\u011b dostupnosti AlwaysOn je sekund\u00e1rn\u00ed replika odpojena nebo se synchronizuje p\u0159\u00edli\u0161 pomalu, co\u017e nut\u00ed prim\u00e1rn\u00ed repliku uchov\u00e1vat z\u00e1znamy protokolu, dokud nejsou potvrzeny na sekund\u00e1rn\u00ed replice.<\/li>\n<\/ol>\n<h2>Strategie rychl\u00e9 obnovy: \u0158e\u0161en\u00ed probl\u00e9mu v produkci<\/h2>\n<p>V z\u00e1vislosti na vr\u00e1cen\u00e9 hodnot\u011b <code>log_reuse_wait_desc<\/code> se bude va\u0161e nouzov\u00e1 reakce li\u0161it. Zde jsou strategie rychl\u00e9 obnovy pro nej\u010dast\u011bj\u0161\u00ed sc\u00e9n\u00e1\u0159e.<\/p>\n<h3>Sc\u00e9n\u00e1\u0159 1: Chyb\u011bj\u00edc\u00ed nebo selh\u00e1vaj\u00edc\u00ed z\u00e1lohy protokolu (<code>LOG_BACKUP<\/code>)<\/h3>\n<p>Pokud je typ \u010dek\u00e1n\u00ed <code>LOG_BACKUP<\/code>, \u0159e\u0161en\u00ed je p\u0159\u00edmo\u010dar\u00e9: mus\u00edte z\u00e1lohovat transak\u010dn\u00ed protokol.<\/p>\n<pre><code class=\"language-sql\">BACKUP LOG [YourDatabaseName] \nTO DISK = 'N:BackupsYourDatabaseName_EmergencyLog.trn' \nWITH COMPRESSION, STATS = 10;\n<\/code><\/pre>\n<p>Jakmile se z\u00e1loha dokon\u010d\u00ed, neaktivn\u00ed VLF budou zkr\u00e1ceny a SQL Server obnov\u00ed norm\u00e1ln\u00ed provoz. Pokud je v\u00e1\u0161 z\u00e1lohovac\u00ed disk pln\u00fd, mo\u017en\u00e1 budete muset z\u00e1lohovat na do\u010dasnou s\u00ed\u0165ovou sd\u00edlenou slo\u017eku nebo na nulov\u00e9 za\u0159\u00edzen\u00ed (d\u016frazn\u011b se nedoporu\u010duje, pokud datab\u00e1zi nelze snadno reprodukovat, proto\u017ee to p\u0159eru\u0161\u00ed \u0159et\u011bzec protokolu):<\/p>\n<pre><code class=\"language-sql\">-- VAROV\u00c1N\u00cd: Toto p\u0159eru\u0161\u00ed \u0159et\u011bzec protokolu a ohroz\u00ed obnovu k ur\u010dit\u00e9mu bodu v \u010dase (point-in-time recovery).\n-- Pou\u017e\u00edvejte pouze v p\u0159\u00edpad\u011b naprost\u00e9 nutnosti a ihned pot\u00e9 prove\u010fte \u00daPLNOU z\u00e1lohu.\nBACKUP LOG [YourDatabaseName] TO DISK = 'NUL';\n<\/code><\/pre>\n<h3>Sc\u00e9n\u00e1\u0159 2: Dlouhotrvaj\u00edc\u00ed aktivn\u00ed transakce (<code>ACTIVE_TRANSACTION<\/code>)<\/h3>\n<p>Pokud jedna transakce b\u011b\u017e\u00ed hodiny, br\u00e1n\u00ed zkr\u00e1cen\u00ed protokolu po celou dobu trv\u00e1n\u00ed. Nejprve identifikujte problematickou transakci:<\/p>\n<pre><code class=\"language-sql\">DBCC OPENTRAN('YourDatabaseName');\n<\/code><\/pre>\n<p>Tento p\u0159\u00edkaz vr\u00e1t\u00ed nejstar\u0161\u00ed aktivn\u00ed transakci a jej\u00ed ID procesu serveru (SPID). Dal\u0161\u00ed podrobnosti o tom, co SPID d\u011bl\u00e1, m\u016f\u017eete z\u00edskat dotazem na dynamick\u00e1 zobrazen\u00ed spr\u00e1vy (DMV):<\/p>\n<pre><code class=\"language-sql\">SELECT \n    s.session_id,\n    s.login_name,\n    s.host_name,\n    r.start_time,\n    r.status,\n    r.command,\n    t.text AS QueryText\nFROM sys.dm_exec_sessions s\nJOIN sys.dm_exec_requests r ON s.session_id = r.session_id\nCROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t\nWHERE s.session_id = &lt;SPID_FROM_DBCC_OPENTRAN&gt;;\n<\/code><\/pre>\n<p>Pokud je transakce chybn\u00fd dotaz nebo zaseknut\u00fd proces, mo\u017en\u00e1 jej budete muset ukon\u010dit, abyste uvolnili protokol.<\/p>\n<pre><code class=\"language-sql\">KILL &lt;SPID&gt;;\n<\/code><\/pre>\n<p><em>Pozn\u00e1mka: Ukon\u010den\u00ed masivn\u00ed transakce spust\u00ed vr\u00e1cen\u00ed zp\u011bt (rollback), co\u017e m\u016f\u017ee trvat zna\u010dnou dobu a do\u010dasn\u011b vygeneruje dal\u0161\u00ed aktivitu protokolu. B\u011bhem rollbacku nerestartujte slu\u017ebu SQL Server, jinak datab\u00e1ze po restartu p\u0159ejde do re\u017eimu obnovy.<\/em><\/p>\n<h3>Sc\u00e9n\u00e1\u0159 3: Nouzov\u00e9 p\u0159id\u011blen\u00ed prostoru (Disk je 100% pln\u00fd)<\/h3>\n<p>Pokud soubor LDF spot\u0159eboval cel\u00fd disk, nem\u016f\u017eete ani spustit z\u00e1lohu, proto\u017ee SQL Server vy\u017eaduje mal\u00e9 mno\u017estv\u00ed m\u00edsta v protokolu pro zaznamen\u00e1n\u00ed samotn\u00e9 ud\u00e1losti z\u00e1lohov\u00e1n\u00ed. V tomto sc\u00e9n\u00e1\u0159i mus\u00edte p\u0159idat sekund\u00e1rn\u00ed soubor protokolu na jin\u00fd disk s dostupn\u00fdm m\u00edstem.<\/p>\n<pre><code class=\"language-sql\">ALTER DATABASE [YourDatabaseName]\nADD LOG FILE \n(\n    NAME = N'YourDatabaseName_Log2',\n    FILENAME = N'E:TempLogsYourDatabaseName_Log2.ldf',\n    SIZE = 5GB,\n    MAXSIZE = 50GB,\n    FILEGROWTH = 1GB\n);\n<\/code><\/pre>\n<p>To okam\u017eit\u011b poskytne SQL Serveru prostor k d\u00fdch\u00e1n\u00ed. Jakmile je datab\u00e1ze online, prove\u010fte z\u00e1lohu transak\u010dn\u00edho protokolu, vypr\u00e1zdn\u011bte sekund\u00e1rn\u00ed soubor protokolu a odstra\u0148te jej:<\/p>\n<pre><code class=\"language-sql\">-- 1. Prove\u010fte z\u00e1lohu protokolu pro zkr\u00e1cen\u00ed protokolu\nBACKUP LOG [YourDatabaseName] TO DISK = '...';\n\n-- 2. Vypr\u00e1zdn\u011bte do\u010dasn\u00fd soubor protokolu\nDBCC SHRINKFILE (N'YourDatabaseName_Log2', EMPTYFILE);\n\n-- 3. Odstra\u0148te do\u010dasn\u00fd soubor protokolu\nALTER DATABASE [YourDatabaseName] REMOVE FILE [YourDatabaseName_Log2];\n<\/code><\/pre>\n<h2>Osv\u011bd\u010den\u00e9 postupy pro prevenci a spr\u00e1vu transak\u010dn\u00edho protokolu<\/h2>\n<p>Reaktivn\u00ed \u0159e\u0161en\u00ed probl\u00e9m\u016f je stresuj\u00edc\u00ed a ovliv\u0148uje SLA. Implementace proaktivn\u00edch architektonick\u00fdch a provozn\u00edch osv\u011bd\u010den\u00fdch postup\u016f je nezbytn\u00e1 pro stabilitu podnikov\u00fdch datab\u00e1z\u00ed.<\/p>\n<h3>1. Implementujte robustn\u00ed, automatizovanou strategii z\u00e1lohov\u00e1n\u00ed<\/h3>\n<p>Pokud je datab\u00e1ze v modelu obnoven\u00ed Full, jsou \u010dast\u00e9 z\u00e1lohy transak\u010dn\u00edho protokolu povinn\u00e9. V z\u00e1vislosti na va\u0161em c\u00edli bodu obnovy (RPO) a objemu transakc\u00ed by z\u00e1lohy protokolu m\u011bly prob\u00edhat ka\u017ed\u00fdch 5 a\u017e 15 minut.<\/p>\n<p>Podnikov\u00e1 \u0159e\u0161en\u00ed z\u00e1lohov\u00e1n\u00ed, jako je CloudSave, tento proces v\u00fdrazn\u011b zjednodu\u0161uj\u00ed. D\u00edky p\u0159\u00edm\u00e9 integraci s SQL Serverem p\u0159es VDI (Virtual Device Interface) umo\u017e\u0148uje CloudSave administr\u00e1tor\u016fm konfigurovat z\u00e1lohy transak\u010dn\u00edch protokol\u016f \u0159\u00edzen\u00e9 z\u00e1sadami a s vysokou frekvenc\u00ed. To zaji\u0161\u0165uje, \u017ee protokoly jsou pr\u016fb\u011b\u017en\u011b zkracov\u00e1ny, bezpe\u010dn\u011b \u0161ifrov\u00e1ny a ukl\u00e1d\u00e1ny mimo pracovi\u0161t\u011b nebo do nem\u011bnn\u00e9ho cloudov\u00e9ho \u00falo\u017ei\u0161t\u011b, \u010d\u00edm\u017e se p\u0159edch\u00e1z\u00ed stavu \u010dek\u00e1n\u00ed <code>LOG_BACKUP<\/code> bez nutnosti slo\u017eit\u00fdch vlastn\u00edch \u00faloh SQL Agenta.<\/p>\n<h3>2. Spr\u00e1vn\u011b dimenzujte transak\u010dn\u00ed protokol a spravujte VLF<\/h3>\n<p>Spol\u00e9hat se na automatick\u00e9 zv\u011bt\u0161ov\u00e1n\u00ed p\u0159i spr\u00e1v\u011b velikosti transak\u010dn\u00edho protokolu je nebezpe\u010dn\u00fd anti-pattern. Operace automatick\u00e9ho zv\u011bt\u0161ov\u00e1n\u00ed jsou n\u00e1kladn\u00e9 a pozastavuj\u00ed zpracov\u00e1n\u00ed transakc\u00ed, zat\u00edmco je disk nulov\u00e1n (pokud nen\u00ed povolena inicializace soubor\u016f okam\u017eit\u011b, co\u017e se <em>nevztahuje<\/em> na soubory protokolu).<\/p>\n<p>Krom\u011b toho \u010dast\u00e9, mal\u00e9 automatick\u00e9 zv\u011bt\u0161ov\u00e1n\u00ed (nap\u0159. zv\u011bt\u0161en\u00ed o 10 % nebo 50 MB najednou) vede k <strong>fragmentaci VLF<\/strong>. Transak\u010dn\u00ed protokol s tis\u00edci mal\u00fdmi VLF v\u00fdrazn\u011b zhor\u0161\u00ed dobu spu\u0161t\u011bn\u00ed datab\u00e1ze, v\u00fdkon z\u00e1lohov\u00e1n\u00ed a latenci replikace.<\/p>\n<ul>\n<li><strong>P\u0159edem dimenzujte protokol:<\/strong> Analyzujte sv\u00e9 nejv\u011bt\u0161\u00ed operace \u00fadr\u017eby (jako jsou p\u0159estavby index\u016f) a p\u0159edem dimenzujte soubor LDF tak, aby je pojal bez nutnosti zv\u011bt\u0161ov\u00e1n\u00ed.<\/li>\n<li><strong>Nastavte pevn\u00e9 automatick\u00e9 zv\u011bt\u0161ov\u00e1n\u00ed:<\/strong> Zm\u011b\u0148te automatick\u00e9 zv\u011bt\u0161ov\u00e1n\u00ed z procenta na pevnou velikost (nap\u0159. 1 GB nebo 5 GB), abyste zajistili, \u017ee VLF budou vytvo\u0159eny ve zdrav\u00e9 velikosti.<\/li>\n<\/ul>\n<p>Po\u010det VLF m\u016f\u017eete zkontrolovat pomoc\u00ed n\u00e1sleduj\u00edc\u00edho dotazu (pro SQL Server 2017+):<\/p>\n<pre><code class=\"language-sql\">SELECT \n    db_name(database_id) AS DatabaseName,\n    COUNT(vlf_sequence_number) AS VLF_Count\nFROM sys.dm_db_log_info(DB_ID('YourDatabaseName'));\n<\/code><\/pre>\n<p>Pokud je v\u00e1\u0161 po\u010det VLF vy\u0161\u0161\u00ed ne\u017e 500, zva\u017ete po\u010dk\u00e1n\u00ed na klidn\u00e9 obdob\u00ed, zmen\u0161en\u00ed protokolu na minim\u00e1ln\u00ed velikost a ru\u010dn\u00ed zv\u011bt\u0161en\u00ed zp\u011bt na po\u017eadovanou velikost ve velk\u00fdch bloc\u00edch.<\/p>\n<h3>3. Optimalizujte operace \u00fadr\u017eby index\u016f<\/h3>\n<p>P\u0159estavby index\u016f jsou pln\u011b protokolovan\u00e9 operace, a to i v modelu obnoven\u00ed Bulk-Logged (v z\u00e1vislosti na typu indexu). P\u0159estavba 500GB indexu vygeneruje minim\u00e1ln\u011b 500 GB z\u00e1znam\u016f transak\u010dn\u00edho protokolu.<\/p>\n<p>Pro zm\u00edrn\u011bn\u00ed bobtn\u00e1n\u00ed protokolu b\u011bhem \u00fadr\u017eby:<br \/>\n*   P\u0159i p\u0159estavb\u011b index\u016f pou\u017eijte <code>SORT_IN_TEMPDB = ON<\/code>. T\u00edm se f\u00e1ze \u0159azen\u00ed p\u0159esune do TempDB, \u010d\u00edm\u017e se sn\u00ed\u017e\u00ed z\u00e1t\u011b\u017e transak\u010dn\u00edho protokolu u\u017eivatelsk\u00e9 datab\u00e1ze.<br \/>\n*   Pokud je to mo\u017en\u00e9, p\u0159epn\u011bte z <em>p\u0159estavby<\/em> index\u016f na <em>reorganizaci<\/em> index\u016f, proto\u017ee reorganizace jsou efektivn\u011bj\u0161\u00ed z hlediska protokolu a lze je p\u0159eru\u0161it, ani\u017e by se vracela cel\u00e1 operace.<br \/>\n*   D\u00e1vkujte velk\u00e9 operace <code>DELETE<\/code> nebo <code>UPDATE<\/code>. M\u00edsto maz\u00e1n\u00ed 10 milion\u016f \u0159\u00e1dk\u016f v jedn\u00e9 transakci je ma\u017ete v d\u00e1vk\u00e1ch po 50 000, p\u0159i\u010dem\u017e mezi d\u00e1vkami potvrzujte (commit) a umo\u017en\u011bte z\u00e1loh\u00e1m protokolu zkr\u00e1tit protokol.<\/p>\n<h3>4. Monitorujte topologie vysok\u00e9 dostupnosti a replikace<\/h3>\n<p>Ve skupin\u00e1ch dostupnosti AlwaysOn nem\u016f\u017ee prim\u00e1rn\u00ed replika zkr\u00e1tit sv\u016fj protokol, dokud nebyly z\u00e1znamy protokolu potvrzeny na v\u0161ech synchronn\u00edch a asynchronn\u00edch sekund\u00e1rn\u00edch replik\u00e1ch.<\/p>\n<p>Pokud sekund\u00e1rn\u00ed replika p\u0159ejde do re\u017eimu offline nebo pokud \u0161\u00ed\u0159ka p\u00e1sma s\u00edt\u011b nest\u00edh\u00e1 rychlost generov\u00e1n\u00ed transakc\u00ed prim\u00e1rn\u00ed repliky, fronta odes\u00edl\u00e1n\u00ed prim\u00e1rn\u00ed repliky poroste a protokol se zapln\u00ed (typ \u010dek\u00e1n\u00ed <code>AVAILABILITY_REPLICA<\/code>).<\/p>\n<p>Implementujte robustn\u00ed monitorov\u00e1n\u00ed \u010d\u00edta\u010de v\u00fdkonu <code>SQLServer:Replica &gt; Log Send Queue<\/code>. Pokud je sekund\u00e1rn\u00ed replika trvale ztracena, mus\u00edte ji odebrat ze skupiny dostupnosti nebo pozastavit p\u0159esun dat, aby se prim\u00e1rn\u00ed protokol mohl zkr\u00e1tit.<\/p>\n<h2>Z\u00e1v\u011br<\/h2>\n<p>Setk\u00e1n\u00ed s pln\u00fdm transak\u010dn\u00edm protokolem je pro datab\u00e1zov\u00e9 administr\u00e1tory k\u0159est ohn\u011bm, ale nemus\u00ed nutn\u011b v\u00e9st k dlouh\u00fdm prostoj\u016fm. Pochopen\u00edm mechanism\u016f Write-Ahead Logging a VLF m\u016f\u017eete rychle diagnostikovat hlavn\u00ed p\u0159\u00ed\u010dinu pomoc\u00ed <code>sys.databases<\/code> a aplikovat spr\u00e1vnou strategii rychl\u00e9 obnovy.<\/p>\n<p>Dlouhodob\u00e1 stabilita z\u00e1vis\u00ed na p\u0159echodu od reaktivn\u00edch oprav. P\u0159edb\u011b\u017en\u00e9 dimenzov\u00e1n\u00ed soubor\u016f protokolu, optimalizace rutin \u00fadr\u017eby a vyu\u017e\u00edv\u00e1n\u00ed podnikov\u00fdch platforem pro z\u00e1lohov\u00e1n\u00ed, jako je CloudSave, k vynucen\u00ed p\u0159\u00edsn\u00fdch, automatizovan\u00fdch pl\u00e1n\u016f z\u00e1lohov\u00e1n\u00ed protokolu zajist\u00ed, \u017ee va\u0161e transak\u010dn\u00ed protokoly z\u016fstanou zdrav\u00e9, zkr\u00e1cen\u00e9 a p\u0159ipraven\u00e9 podporovat produk\u010dn\u00ed \u00falohy s vysokou propustnost\u00ed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>** Discover expert strategies for preventing and resolving MSSQL transaction log full errors (Error 9002). Learn rapid recovery techniques, VLF management, and architectural best practices for DBAs.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"MSSQL Transaction Log Full: Prevention & Recovery","rank_math_description":"** Discover expert strategies for preventing and resolving MSSQL transaction log full errors (Error 9002). Learn rapid recovery techniques, VLF management, and architectural best practices for DBAs.","rank_math_focus_keyword":"MSSQL transaction log full","footnotes":""},"categories":[383],"tags":[892,3998,3999,4000,4001,4002,4003],"class_list":["post-5890","post","type-post","status-publish","format-standard","hentry","category-database-backup","tag-database-administration","tag-error-9002","tag-log-backup","tag-mssql","tag-sql-recovery","tag-sql-server","tag-transaction-log"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.7 (Yoast SEO v27.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>MSSQL Transaction Log Full: Prevention &amp; Recovery<\/title>\n<meta name=\"description\" content=\"** Discover expert strategies for preventing and resolving MSSQL transaction log full errors (Error 9002). Learn rapid recovery techniques, VLF management, and architectural best practices for DBAs.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/\" \/>\n<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pln\u00fd transak\u010dn\u00ed log MSSQL: Strategie prevence a rychl\u00e9 obnovy\" \/>\n<meta property=\"og:description\" content=\"** Discover expert strategies for preventing and resolving MSSQL transaction log full errors (Error 9002). Learn rapid recovery techniques, VLF management, and architectural best practices for DBAs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/\" \/>\n<meta property=\"og:site_name\" content=\"CloudSave\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-16T16:15:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-16T16:42:10+00:00\" \/>\n<meta name=\"author\" content=\"shervinrv\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napsal(a)\" \/>\n\t<meta name=\"twitter:data1\" content=\"shervinrv\" \/>\n\t<meta name=\"twitter:label2\" content=\"Odhadovan\u00e1 doba \u010dten\u00ed\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/knowledge-base\\\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/knowledge-base\\\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\\\/\"},\"author\":{\"name\":\"shervinrv\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/#\\\/schema\\\/person\\\/286beefe68281d868e87f46603a7ae4d\"},\"headline\":\"Pln\u00fd transak\u010dn\u00ed log MSSQL: Strategie prevence a rychl\u00e9 obnovy\",\"datePublished\":\"2026-06-16T16:15:28+00:00\",\"dateModified\":\"2026-06-16T16:42:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/knowledge-base\\\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\\\/\"},\"wordCount\":1930,\"publisher\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/#\\\/schema\\\/person\\\/286beefe68281d868e87f46603a7ae4d\"},\"keywords\":[\"Database Administration\",\"Error 9002\",\"Log Backup\",\"MSSQL\",\"SQL Recovery\",\"SQL Server\",\"Transaction Log\"],\"articleSection\":[\"Database Backup\"],\"inLanguage\":\"cs\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/knowledge-base\\\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\\\/\",\"url\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/knowledge-base\\\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\\\/\",\"name\":\"MSSQL Transaction Log Full: Prevention & Recovery\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/#website\"},\"datePublished\":\"2026-06-16T16:15:28+00:00\",\"dateModified\":\"2026-06-16T16:42:10+00:00\",\"description\":\"** Discover expert strategies for preventing and resolving MSSQL transaction log full errors (Error 9002). Learn rapid recovery techniques, VLF management, and architectural best practices for DBAs.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/knowledge-base\\\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\\\/#breadcrumb\"},\"inLanguage\":\"cs\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cloudsave.app\\\/cs\\\/knowledge-base\\\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/knowledge-base\\\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pln\u00fd transak\u010dn\u00ed log MSSQL: Strategie prevence a rychl\u00e9 obnovy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/#website\",\"url\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/\",\"name\":\"CloudSave\",\"description\":\"CloudSave\",\"publisher\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/#\\\/schema\\\/person\\\/286beefe68281d868e87f46603a7ae4d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"cs\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/#\\\/schema\\\/person\\\/286beefe68281d868e87f46603a7ae4d\",\"name\":\"shervinrv\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"cs\",\"@id\":\"https:\\\/\\\/cloudsave.app\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Logo_Name-2.png\",\"url\":\"https:\\\/\\\/cloudsave.app\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Logo_Name-2.png\",\"contentUrl\":\"https:\\\/\\\/cloudsave.app\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Logo_Name-2.png\",\"width\":859,\"height\":150,\"caption\":\"shervinrv\"},\"logo\":{\"@id\":\"https:\\\/\\\/cloudsave.app\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Logo_Name-2.png\"},\"sameAs\":[\"http:\\\/\\\/cloudsave.app\"],\"url\":\"https:\\\/\\\/cloudsave.app\\\/cs\\\/knowledge-base\\\/author\\\/shervinrv\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MSSQL Transaction Log Full: Prevention & Recovery","description":"** Discover expert strategies for preventing and resolving MSSQL transaction log full errors (Error 9002). Learn rapid recovery techniques, VLF management, and architectural best practices for DBAs.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/","og_locale":"cs_CZ","og_type":"article","og_title":"Pln\u00fd transak\u010dn\u00ed log MSSQL: Strategie prevence a rychl\u00e9 obnovy","og_description":"** Discover expert strategies for preventing and resolving MSSQL transaction log full errors (Error 9002). Learn rapid recovery techniques, VLF management, and architectural best practices for DBAs.","og_url":"https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/","og_site_name":"CloudSave","article_published_time":"2026-06-16T16:15:28+00:00","article_modified_time":"2026-06-16T16:42:10+00:00","author":"shervinrv","twitter_card":"summary_large_image","twitter_misc":{"Napsal(a)":"shervinrv","Odhadovan\u00e1 doba \u010dten\u00ed":"11 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/#article","isPartOf":{"@id":"https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/"},"author":{"name":"shervinrv","@id":"https:\/\/cloudsave.app\/cs\/#\/schema\/person\/286beefe68281d868e87f46603a7ae4d"},"headline":"Pln\u00fd transak\u010dn\u00ed log MSSQL: Strategie prevence a rychl\u00e9 obnovy","datePublished":"2026-06-16T16:15:28+00:00","dateModified":"2026-06-16T16:42:10+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/"},"wordCount":1930,"publisher":{"@id":"https:\/\/cloudsave.app\/cs\/#\/schema\/person\/286beefe68281d868e87f46603a7ae4d"},"keywords":["Database Administration","Error 9002","Log Backup","MSSQL","SQL Recovery","SQL Server","Transaction Log"],"articleSection":["Database Backup"],"inLanguage":"cs"},{"@type":"WebPage","@id":"https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/","url":"https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/","name":"MSSQL Transaction Log Full: Prevention & Recovery","isPartOf":{"@id":"https:\/\/cloudsave.app\/cs\/#website"},"datePublished":"2026-06-16T16:15:28+00:00","dateModified":"2026-06-16T16:42:10+00:00","description":"** Discover expert strategies for preventing and resolving MSSQL transaction log full errors (Error 9002). Learn rapid recovery techniques, VLF management, and architectural best practices for DBAs.","breadcrumb":{"@id":"https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/#breadcrumb"},"inLanguage":"cs","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/cloudsave.app\/cs\/knowledge-base\/pln%c3%bd-transak%c4%8dn%c3%ad-log-mssql-strategie-prevence-a-rychl%c3%a9-obnovy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudsave.app\/cs\/"},{"@type":"ListItem","position":2,"name":"Pln\u00fd transak\u010dn\u00ed log MSSQL: Strategie prevence a rychl\u00e9 obnovy"}]},{"@type":"WebSite","@id":"https:\/\/cloudsave.app\/cs\/#website","url":"https:\/\/cloudsave.app\/cs\/","name":"CloudSave","description":"CloudSave","publisher":{"@id":"https:\/\/cloudsave.app\/cs\/#\/schema\/person\/286beefe68281d868e87f46603a7ae4d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudsave.app\/cs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"cs"},{"@type":["Person","Organization"],"@id":"https:\/\/cloudsave.app\/cs\/#\/schema\/person\/286beefe68281d868e87f46603a7ae4d","name":"shervinrv","image":{"@type":"ImageObject","inLanguage":"cs","@id":"https:\/\/cloudsave.app\/wp-content\/uploads\/2026\/02\/Logo_Name-2.png","url":"https:\/\/cloudsave.app\/wp-content\/uploads\/2026\/02\/Logo_Name-2.png","contentUrl":"https:\/\/cloudsave.app\/wp-content\/uploads\/2026\/02\/Logo_Name-2.png","width":859,"height":150,"caption":"shervinrv"},"logo":{"@id":"https:\/\/cloudsave.app\/wp-content\/uploads\/2026\/02\/Logo_Name-2.png"},"sameAs":["http:\/\/cloudsave.app"],"url":"https:\/\/cloudsave.app\/cs\/knowledge-base\/author\/shervinrv\/"}]}},"_links":{"self":[{"href":"https:\/\/cloudsave.app\/cs\/wp-json\/wp\/v2\/posts\/5890","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudsave.app\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudsave.app\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudsave.app\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudsave.app\/cs\/wp-json\/wp\/v2\/comments?post=5890"}],"version-history":[{"count":1,"href":"https:\/\/cloudsave.app\/cs\/wp-json\/wp\/v2\/posts\/5890\/revisions"}],"predecessor-version":[{"id":5955,"href":"https:\/\/cloudsave.app\/cs\/wp-json\/wp\/v2\/posts\/5890\/revisions\/5955"}],"wp:attachment":[{"href":"https:\/\/cloudsave.app\/cs\/wp-json\/wp\/v2\/media?parent=5890"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudsave.app\/cs\/wp-json\/wp\/v2\/categories?post=5890"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudsave.app\/cs\/wp-json\/wp\/v2\/tags?post=5890"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}