V mém předchozím článku o SQL Server Agent Alerts jsem poskytl podrobné pokyny, jak nastavit a nakonfigurovat upozornění SQL Agent pro velmi závažné chyby 19-25 a také chybu 825. V tomto článku se budu zabývat prodiskutujte tyto chyby podrobně a podělte se o to, co byste měli dělat, pokud k nim dojde ve vašem prostředí.
Chyby s úrovní závažnosti 19 nebo vyšší zastaví dokončení aktuální dávky. Chyby se závažností 20 a vyšší jsou závažné chyby a ukončují aktuální připojení klienta. Tyto chyby mohou také ovlivnit všechny procesy v databázi. Závažné chyby jsou přesně to, co název napovídá:běžící proces je ukončen a klientské připojení je uzavřeno.
Chyby závažnosti 19
Chyba závažnosti 19 je chyba způsobená nedostatkem zdroje. To znamená, že byl překročen vnitřní limit (který nemůžete konfigurovat), což způsobilo ukončení aktuální dávky. K těmto chybám dochází jen zřídka a pro nápravu problému můžete udělat jen málo. Pokud dojde k chybě závažnosti 19, měli byste kontaktovat svého primárního poskytovatele podpory; typicky by to byl Microsoft.
Za všechny roky práce se serverem SQL si nemohu vzpomenout na žádný incident, kdy by byla vygenerována chyba závažnosti 19. I když jsem prohledal Bing, měl jsem problém najít výskyty chyby; těch několik odkazů, které jsem našel, se týkalo rané verze SQL Serveru a odkazovalo na chybu v samotném SQL Serveru.
Chyby závažnosti 20
Chyba závažnosti 20 je závažnou chybou v aktuálním procesu. To znamená, že příkaz narazil na problém a byl ukončen. Protože to ovlivňuje pouze aktuální proces, je velmi nepravděpodobné, že by byla poškozena samotná databáze. Tyto chyby jsou spojeny s jednotlivými prohlášeními, takže budete muset shromáždit celou chybovou zprávu a kontaktovat osobu nebo tým odpovědný za daný bit kódu. Může to být interní nebo možná dodavatel aplikace. Příklad chyby je:
Chyba:18056, závažnost 20, stav:29Klient nemohl znovu použít relaci s SPID 123, která byla resetována pro sdružování připojení.
V případě této chyby bych se obrátil na vývojáře aplikace nebo dodavatele, protože chyba souvisí se sdruženým připojením, u kterého při pokusu o reset došlo k chybě. Také bych zkontroloval protokoly SQL Server, které mohou obsahovat podrobnější chybovou zprávu týkající se toho, co se ve skutečnosti děje, aby chybu způsobilo.
Chyby závažnosti 21
Chyba závažnosti 21 je závažná chyba v databázi, která ovlivňuje všechny procesy používající tuto databázi.
Viděl jsem, že k této chybě došlo při pokusu o obnovení databáze pomocí podnikových funkcí do instance Standard Edition a také když je databáze poškozená a uživatel se pokusí otevřít poškozenou stránku. Příklad chybové zprávy tohoto typu je:
Chyba:605, závažnost:21, stav 1Pokus o načtení logické stránky (1:8574233) v databázi 'DB_NAME' patří objektu '0', nikoli objektu 'Tabulka01'.
Při pokusu o obnovení databáze, která používá funkce Enterprise, do instance Standard Edition, budete muset nejprve odebrat funkce Enterprise. Pokud například používáte kompresi dat nebo sběr dat změn, budete muset nejprve přestat používat a odebrat tyto funkce z databáze, zálohovat databázi a poté ji obnovit do instance Standard Edition. Můžete použít DMV sys.dm_db_persisted_sku_features
zkontrolovat, zda používáte nějaké funkce pouze pro podniky.
Pro chyby poškození budete muset spustit DBCC CHECKDB
určit rozsah korupce a jít odtud. Pokud budete mít štěstí, chyba bude v neklastrovaném indexu, který můžete znovu sestavit a problém vyřešit. Pokud je poškození závažnější, můžete se podívat na operaci obnovení. Chcete-li lépe porozumět korupci a tomu, jak řešit různé aspekty korupce, doporučuji vám přečíst si různé blogové příspěvky Paula Randala. Paul má celou kategorii o korupci, kterou si můžete prohlédnout zde:
- http://www.sqlskills.com/blogs/paul/category/corruption/
Spuštění DBCC CHECKDB
jako součást pravidelně naplánované úlohy proti vašim databázím se důrazně doporučuje odhalit korupci co nejdříve. Pokud pravidelně nekontrolujete poškození, pak jste vystaveni obrovskému riziku, že nebudete moci obnovit poškozená data.
Chyby závažnosti 22
Chyba závažnosti 22 je závažná chyba způsobená podezřením na integritu tabulky, což v podstatě znamená, že tabulka nebo index zadaný ve zprávě je poškozen. Korupce se stává a stává se často. Naše zkušenost je taková, že k většině poškození dochází kvůli problému souvisejícím s I/O subsystémem. Pokud narazíte na chybu závažnosti 22, budete muset spustit DBCC CHECKDB
k určení rozsahu škody. Příklad chyby je:
Nelze otevřít XYZ pro neplatný soubor ID ## v databázi. Tabulka nebo databáze mohou být poškozeny.
Pokud je chyba v neklastrovaném indexu, můžete pouze znovu vytvořit index a opravit poškození. Pokud je poškození v hromadě nebo klastrovaném indexu, budete muset obnovit databázi do konzistentního stavu.
Viděl jsem zprávy, kde bylo poškození v paměti, ale ne na disku. V takovém případě by restartování instance nebo nastavení databáze offline a poté online mělo odstranit chybu.
Chyby závažnosti 23
Chyba závažnosti 23 je další závažnou chybou oznamující, že samotná databáze má problém s integritou. Rozlišení je podobné jako u chyby závažnosti 22, kde musíte okamžitě spustit DBCC CHECKDB
zjistit celý rozsah poškození databáze.
Tato úroveň poškození je detekována jako ovlivňující celou databázi. Může se jednat o poškození v rámci samotného datového souboru nebo poškození v souboru protokolu. Podrobnosti o chybě vás nasměrují ke kořenovému problému. Například následující chyba poukazuje na to, že bychom museli obnovit naši databázi nebo se pokusit znovu sestavit protokol. Kvůli konzistenci bych obnovil z mé nejnovější zálohy a všech dostupných záloh protokolu transakcí.
Chyba:9004, Závažnost:23 Stav:6Při zpracování protokolu pro databázi 'název_db' došlo k chybě. Pokud je to možné, obnovte ze zálohy. Pokud záloha není k dispozici, může být nutné znovu sestavit protokol.
Chyby závažnosti 24
Chyba závažnosti 24 je závažná chyba související s hardwarem. Tato zpráva by se objevila kvůli nějakému typu selhání média. Nejběžnější z těchto typů chyb, které jsem viděl, souvisí s problémy s pamětí a chybami I/O. Například:
Chyba:832, závažnost:24, stav:1Stránka, která měla být konstantní, se změnila (očekávaný kontrolní součet:
Když se vyskytnou takové chyby, měli byste kontaktovat tým systémové podpory, aby provedl test paměti na vašem serveru a provedl dobrý zdravotní stav serveru. Touto chybou může být špatná paměť nebo programátor paměti (proces jádra nebo něco, co mění paměť serveru SQL).
Další příklad:
Chyba:824, závažnost:24, stav:2SQL Server zjistil chybu logického vstupu/výstupu založené na konzistenci:nesprávné ID stránky (očekávané 1:123; skutečné 0:0). Došlo k tomu během čtení stránky (1:123) v databázi ID
Tato chyba označuje chybu konzistence v primárním datovém souboru databáze. Budete muset okamžitě spustit DBCC CHECKDB
určit rozsah poškození a podniknout příslušné kroky k opravě nebo obnovení databáze.
Chyby závažnosti 25
Chyba závažnosti 25 je závažná systémová chyba. Slyšel jsem, že závažnost 25 je víceméně univerzálním řešením pro různé fatální chyby. Tuto chybu jsem viděl pouze v souvislosti s neúspěšnými upgrady:něco brání spuštění jednoho z upgradovacích skriptů a je vyvolána chyba závažnosti 25. Zobrazí se chyba podobná:
Upgrade na úrovni skriptu pro databázi 'master' se nezdařil, protože v kroku upgradu 'sqlagent90_sysdbupg.sql' došlo k chybě 598, stav 1, závažnost 25. Toto je závažný chybový stav, který může narušovat běžný provoz a databáze bude převedena do režimu offline. Pokud k chybě došlo během upgradu 'master' databáze, zabrání to spuštění celé instance SQL Serveru. Zkontrolujte předchozí záznamy protokolu chyb, zda neobsahují chyby, proveďte příslušná nápravná opatření a znovu spusťte databázi, aby byly kroky upgradu skriptu dokončeny.V tomto případě chyby před touto zprávou indikovaly nesprávnou cestu k výchozímu umístění dat pro SQL Server. Jakmile to bylo opraveno, aktualizace proběhla úspěšně.
Chyba 825
Chyba 825 je často označována jako upozornění na opakování čtení, ale podmínkou jsou operace čtení i zápisu. Tato chyba vás informuje, že bylo nutné operaci zopakovat a kolikrát musel SQL Server pokus zopakovat, než byl úspěšný. SQL Server zopakuje operace až čtyřikrát, po čtyřech pokusech o opakování vyvolá chybu 823 nebo 824. Chybové zprávy 825 budou podobné následujícím:
Čtení souboru 'cesta k souboru name\db_name.mdf' s offsetem 0x00000002000 bylo úspěšné poté, co se dvakrát nezdařilo s chybou:nesprávný kontrolní součet (očekávaný:XYZ; skutečný ABC). Další podrobnosti mohou poskytnout další zprávy v protokolu chyb serveru SQL Server a protokolu událostí systému. Tento chybový stav ohrožuje integritu databáze a musí být opraven. Dokončete úplnou kontrolu konzistence databáze (DBCC CHECKDB). Tato chyba může být způsobena mnoha faktory; Další informace najdete v tématu SQL Server Books Online.
Tyto zprávy jsou důležité, protože indikují, že máte větší problém s diskovým subsystémem. Metodou odstraňování problémů by bylo spuštění DBCC CHECKDB
abyste se ujistili, že databáze je konzistentní, jak chyba doporučuje, a také zkontrolujte protokoly událostí systému Windows, zda neobsahují chyby operačního systému nebo úložných zařízení. Měli byste požádat svůj tým podpory úložiště a hardwaru, aby také zkontroloval základní I/O subsystém, zda neobsahuje chyby.
Shrnutí
Nakonfigurování výstrah SQL Agent je bezplatné a snadné. Být proaktivní a reagovat na tato upozornění je důležité pro minimalizaci prostojů pro vás a vaše zákazníky. Jak jste se nyní dozvěděli, mnoho věcí může ovlivnit SQL Server a konzistenci vašich databází a nejlepší obranou, jak se po těchto chybách zotavit, je mít dobré zálohy a znát různé možnosti opravy pro DBCC CHECKDB
. Vždy se doporučuje spustit DBCC CHECKDB
pravidelně proti vašim databázím, abyste co nejdříve odhalili poškození, protože čím rychleji najdete poškození, tím je pravděpodobnější, že budete mít data zálohována, abyste je mohli obnovit bez ztráty dat.