Být správcem databáze má mnoho povinností a jednou z nich je vědět, co se děje na vašem SQL Serveru. Být proaktivní a upozorňovat na chyby je jednou z vlastností, která z někoho dělá skvělého DBA. A nemluvím jen o tom, že věci selžou, což si většina lidí myslí, že jsou upozorněni; můžete být také upozorněni na problémy s výkonem. V rámci SQL Serveru máte možnost vytvářet výstrahy SQL Server Agent Alerts (které od nynějška budu nazývat pouze „upozornění“), a to lze snadno provést pomocí GUI nebo T-SQL.
Konfigurace výstrah SQL Server Agent
Chcete-li používat výstrahy, musíte mít nakonfigurován Database Mail a SQL Agent Operator. Většina instancí SQL, se kterými jsem se setkal, již má Database Mail nakonfigurovanou pro upozornění na selhání úlohy. Pokud potřebujete další informace o nastavení této funkce, navštivte téma Books Online, "Konfigurovat databázovou poštu."
Méně známým úkolem je konfigurace operátora. Operátora můžete vytvořit pomocí SSMS nebo T-SQL. V rámci SSMS rozbalte SQL Server Agent, klikněte pravým tlačítkem na Operator a vyberte New Operator. Otevře se nové dialogové okno, kde můžete zadat jméno operátora a zadat e-mailovou adresu, na kterou má být upozorněn. Dávám přednost použití distribuční skupiny pro e-mailová upozornění. Většina společností má více než jednu osobu odpovědnou za prostředí SQL, a pokud zadáte distribuční skupinu, může být o výstrahách informován celý tým. Použití distribučních skupin také výrazně usnadňuje přidávání nebo odebírání lidí z upozornění.
Níže je ukázkový snímek obrazovky dialogu Nový operátor:
Preferuji používání T-SQL, abych se mohl ujistit, že vytvoření operátora je součástí šablony sestavení serveru. Příklad kódu pro vytvoření výše uvedeného operátoru je následující:
EXEC msdb.dbo.sp_add_operator @name = N'SQL_Alerts', @enabled = 1, @email_address = N'[email protected]';
Jakmile máte databázovou poštu a operátora nakonfigurován, můžete vytvářet výstrahy a přiřazovat je operátorovi.
Pokud používáte SSMS, můžete rozbalit SQL Server Agent a poté Alerts. Ve výchozím nastavení nejsou vytvářena žádná upozornění. Pokud kliknete pravým tlačítkem a vyberete New Alert, zobrazí se obrazovka podobná obrázku níže:
Všimnete si, že pod Závažností je 25 kódů závažnosti. Jak to zní, úroveň závažnosti chyby popisuje, jak důležitá je chyba. Závažnost 10 je informativní, zatímco závažnost 19-25 je smrtelná a budete chtít být upozorněni, když k těmto chybám dojde. Pokud například došlo k chybě závažnosti 23, pak máte s největší pravděpodobností poškozenou některou z vašich databází. Všechny tyto fatální chyby mohou ovlivnit výkon vašeho serveru, což má zase dopad na zákaznickou zkušenost.
Existuje další výstraha, kterou musíte vytvořit pro chybu 825. Chyba 825, jak popisuje Paul Randal ve svém příspěvku na blogu, souvisí s I/O operací, kterou musel SQL Server zopakovat, ale která nakonec uspěje (zatímco chyby 823 a 824 označuje, že operace opakování I/O byla zopakována a nakonec se nezdařila). Chybu 825 je důležité vědět, protože vás upozorňuje na problémy s I/O, které by se v budoucnu mohly stát fatálními. Jakýkoli pokus o opakování je špatný, neměli byste čekat, až selže oznámení o I/O operaci. Pokud se vám začnou zobrazovat zprávy Error 825, musíte se okamžitě obrátit na týmy úložiště a hardwaru.
Každé z upozornění můžete vytvořit zadáním názvu a výběrem závažnosti. Pro Chybu 825 byste vybrali Error a zadejte číslo. Stejně jako u Operátora raději používám T-SQL. Pokud mohu snadno naskriptovat proces, je mnohem snazší jej znovu použít a zahrnout jako součást sestavení serveru.
Níže naleznete skript, který jsem použil na své pracovní stanici SQL Server 2014 Developer. Tento skript vytvoří každé z výstrah a přidá upozornění na výstrahu do SQL_Alerts operátora.
EXEC msdb.dbo.sp_add_alert @name = N'Severity 19 Error', @message_id = 0, @severity = 19, @include_event_description_in = 0; EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 19 Error', @operator_name = N'SQL_Alerts', @notification_method = 1; EXEC msdb.dbo.sp_add_alert @name = N'Severity 20 Error', @message_id = 0, @severity = 20, @include_event_description_in = 0; EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 20 Error', @operator_name = N'SQL_Alerts', @notification_method = 1; EXEC msdb.dbo.sp_add_alert @name=N'Severity 21 Error', @message_id = 0, @severity = 21, @include_event_description_in = 0; EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 21 Error', @operator_name = N'SQL_Alerts', @notification_method = 1; EXEC msdb.dbo.sp_add_alert @name = N'Severity 22 Error', @message_id = 0, @severity = 22, @include_event_description_in = 0; EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 22 Error', @operator_name = N'SQL_Alerts', @notification_method = 1; EXEC msdb.dbo.sp_add_alert @name = N'Severity 23 Error', @message_id = 0, @severity = 23, @include_event_description_in = 0; EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 23 Error', @operator_name = N'SQL_Alerts', @notification_method = 1; EXEC msdb.dbo.sp_add_alert @name = N'Severity 24 Error', @message_id = 0, @severity = 24, @include_event_description_in = 0; EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 24 Error', @operator_name = N'SQL_Alerts', @notification_method = 1; EXEC msdb.dbo.sp_add_alert @name = N'Severity 25 Error', @message_id = 0, @severity = 25, @include_event_description_in = 0; EXEC msdb.dbo.sp_add_notification @alert_name = N'Severity 25 Error', @operator_name = N'SQL_Alerts', @notification_method = 1; EXEC msdb.dbo.sp_add_alert @name = N'Error 825', @message_id = 825, @severity = 0, @include_event_description_in = 0; EXEC msdb.dbo.sp_add_notification @alert_name = N'Error 825', @operator_name = N'SQL_Alerts', @notification_method = 1;
Pokud jste postupovali podle toho, měli byste nakonfigurovanou databázovou poštu, vytvořili byste operátora, který vám nebo distribuční skupině pošle e-mail o potenciálních chybách, a upozornění SQL Server Agent Alerts nakonfigurovaná pro závažnost 19 – 25 a chybu 825.
To je skvělé. Kdykoli se spustí jedno z těchto upozornění, bude vašemu týmu zaslán e-mail. Kromě upozornění na události lze upozornění nakonfigurovat pro podmínku výkonu, jak jsem zmínil v úvodu. Pokud například využití paměti překročí definovanou prahovou hodnotu, může se spustit výstraha. Doporučuji vám prozkoumat různá upozornění na výkon a vytvořit ta, která by vaše organizace mohla využít. Chcete-li najít výstrahy stavu výkonu serveru SQL Server, v dialogovém okně Nová výstraha klikněte na rozevírací pole Typ. Zde uvidíte upozornění na stav výkonu serveru SQL Server. Jakmile zvolíte tuto možnost, můžete procházet typy objektů, pro které můžete nakonfigurovat výstrahu stavu výkonu.
Zatímco jsme k odpovědi na výstrahu přiřadili operátora, můžete výstrahu nakonfigurovat tak, aby provedla úlohu agenta SQL. I když vám to poskytuje určitou flexibilitu při provádění úkolů reakce na událost, neposkytuje to možnost snadného podmíněného upozornění.
Použití SQL Sentry pro pokročilé upozornění
Pro pokročilejší upozorňování potřebujete lepší nástroj. Zde může SQL Sentry pomoci. Jednou z mých oblíbených funkcí výstrahy SQL Sentry je schopnost vytvářet vlastní podmínky pro upozornění nebo akci, když se něco v prostředí změní. Pokud například někdo změnil minimální nebo maximální hodnotu paměti, upravil maxdop nebo prahovou hodnotu pro paralelismus, můžete dostat upozornění nebo dokonce spustit proces. Tato funkce byla představena v SQL Sentry v8 a Greg Gonzalez (blog | @SQLsensei) o ní napsal blog zde:"SQL Sentry v8:Intelligent Alerting Redefined."
Pomocí této funkce můžete také vytvořit vlastní podmínky pro různé databáze v rámci jediné výstrahy. Pokud byste se o to pokusili pomocí výstrah SQL Agent, museli byste pro každou databázi vytvořit různá upozornění.
Další skvělou funkcí upozornění je možnost vytvářet různé plány upozornění. Mnoho organizací má týmy, které jsou zodpovědné během různých částí dne. Někteří mohou mít v denních hodinách na starosti produkční DBA, přičemž noční směnu zastřešuje síťové provozní centrum a o víkendech pak osoba na zavolání. Nebylo by skvělé mít možnost přizpůsobit plán upozornění tak, aby informoval správné týmy během jejich hodin odpovědnosti?
Můžete vytvořit výstražná okna (jako časové okno) a spojit je s různými výstrahami nebo skupinami. To umožňuje, aby různá upozornění byla aktivní v různých časech a aby byly různé skupiny upozorňovány v různých časech. To je opravdu skvělé, protože umožňuje, aby se vaše upozornění řídilo plánem podpory, takže jsou informováni správní lidé. Scott Fallen podrobně popisuje tuto funkci v příspěvku na blogu „Upozorňování na plán hovorů pomocí SQL Sentry“, který vás provede vytvářením upozornění pro různé týmy na zavolání.
Další varovnou funkcí Performance Advisor a Event Manager je možnost konfigurovat další reakce, jako je spuštění procesu Windows, protokolování události do databáze nebo protokolu chyb, odeslání SNMP trapu do jiného monitorovacího nástroje, jako je SCOM, nebo dokonce ukončení procesu. . Vaše možnosti jsou téměř neomezené, pokud jde o to, co můžete předem definovat, aby se stalo, když nastane určitá událost. Upozornění SQL Agent nejsou tolik přizpůsobitelné.
Shrnutí
Důležitým poznatkem z tohoto příspěvku je, že musíte být upozorňováni na chyby a podmínky výkonu. Pokud nemáte nástroj, jako je SQL Sentry, pak je použití SQL Agent Alerts stále skvělým začátkem.
V následujících několika příspěvcích se ponořím do některých z těchto výstrah ovlivňujících výkon a prodiskutuji, jaká opatření byste museli podniknout, když se objeví.