Table of Contents
Jeśli zobaczysz komunikat o błędzie przesyłania dalej podczas sprawdzania błędów programu SQL Server na swoim komputerze, musisz zapoznać się z tymi pomysłami dotyczącymi odzyskiwania.
Komputer działa wolno?
Prezentacja
W poprzednim wpisie na blogu stworzyłem pliki T-SQL-Script-Indication-Audit-Files w celu wysyłania e-maili z określonymi informacjami o zmianach, które mają pomóc instancji.
W tym artykule członkowie rodziny dowiadują się, jak korzystać z dziennika błędów, aby uzyskać przyzwoite wiadomości e-mail o błędach krytycznych lub określonych zdarzeniach, które wystąpią w danej instancji.
Dosyć typową dobrą praktyką dla każdego administratora jest konfigurowanie alertu agenta SQL serwera dla błędów o jednym poziomie ważności od 17 do 25. png
Ostrzeżenia są również często wdzięczne za mniej krytyczne błędy, takie jak „Połączenie nie powiodło się” (ważność 14).
E-maile wysyłane przez wyszukiwanie alertów są bardzo proste:
Wszystkie połączone te błędy są zapisywane w pliku dziennika błędów programu SQL Server.
Wiadomości tekstowe dla każdego z tych komunikatów o błędach, z których wszystkie są rejestrowane w każdym z naszych dzienników błędów, można znaleźć ogólnie w widoku sys.messages.
wybierz identyfikator wiadomości, ważność, tekstprzez sys.messagesgdzie (dotkliwość od 18 do 21 lub prawo grawitacji = 14) a zatem jest_event_logged równa się 1 a zatem id_języka = 1033sortuj powagę;
Widoki dziennika błędów można łatwo odczytać za pomocą zarejestrowanego programu sp_reaerrorlog.
Przeszukaj dziennik błędów SQL danej osoby
Celem w odniesieniu do skryptu T-SQL, który teraz piszę, było zastąpienie ostrzeżeń zadaniem, które działa tylko w mojej instancji. Emuluje co 5 minimum i wysyła mi wiadomości oparte na określonych przeze mnie komunikatach.
Jeśli znam wszystkie informacje, które widzieliśmy wcześniej, mam możliwość utworzenia zmiennej tablicowej z tekstem, który chcę znaleźć w dzienniku błędów, czasem krytycznych nieporozumień lub komunikatów informacyjnych.
DECLARE TABLE @errorlog_definition (error_category varchar (150), wzorzec_błędu varchar (1000))Wklej, aby stać się @errorlog_definitionWartości („Opóźnienie zapisu bazy danych”, „% żądań I lub O trwa dłużej niż% sekund i kończy%”), ('Opóźniony zapis do bazy danych', '% opróżnionych bufs% in% ms% dla db%'), ('Opóźniony zapis do bazy danych', '% avg%'), ('Opóźnienie zapisu bazy danych', '% ostatniego nierozwiązanego odbiorcy:% avgWriteLatency%'), ('Błąd zapisu do bazy danych, dysk zapełniony', 'Na pewno nie może być przypisany'), ('Błąd łączenia z bazą danych', '% Błąd łączenia%'), ('Uruchamianie SQL Server', 'Uruchamianie SQL Server%')
Pierwsza kolumna reprezentuje konkretną odmianę zdarzenia, o którym powinienem zostać powiadomiony przez e-mail i jest używana z nagłówka oprogramowania e-mail.
Bieżące bazy danych dzienników Błędy mogą być wstawiane do zmiennych tabeli.
Wstaw
łatwo do @errorlogexec sp_readerrorlog od 0
Teraz mogę tylko użyć CROSS APPPY, aby uzyskać aukcje sprzedaży dziennika błędów, które pasują do moich szablonów wiadomości.
podjąć decyzję e.LogDate, e.ProcessInfo, e.Text, c.error_categoryoferowane przez @errorlog AS eZatrudnienie krzyżowe (Wybierać *oferowane przez @errorlog_definition AS e dgdzie .Text, na przykład jak d.error_pattern) AS c
Mogę łatwo uzyskać tylko niektóre wpisy w dzienniku błędów, których potrzebuję. Posty zostały podzielone na kategorie, ponieważ postanowiłem nie wysyłać jednego maila za każdym razem, gdy proces się rozpoczynał, ale o tej samej godzinie dla każdej kategorii.
Zrobiłem to z kursorami. Oto kompletny skrypt, jeśli masz nadzieję go wypróbować.
Skrypt
ASR Pro to najlepsze rozwiązanie dla potrzeb naprawy komputera! Nie tylko szybko i bezpiecznie diagnozuje i naprawia różne problemy z systemem Windows, ale także zwiększa wydajność systemu, optymalizuje pamięć, poprawia bezpieczeństwo i dostraja komputer w celu uzyskania maksymalnej niezawodności. Więc po co czekać? Zacznij już dziś! Gotowe za’ + przekonwertuj (varchar, getdate (), 120) + ‘z serwera “‘ + isnull (konwertuj (varchar (128)), @@ NAZWA SERWERA), ”) + ‘”Komputer działa wolno?
‘- —-ZADEKLARUJ TABELĘ @errorlog_definition (error_category varchar (150), wzorzec_błędu varchar (1000))Wklej do @errorlog_definitionWartości („Opóźnienie zapisu bazy danych”, „% żądań we/wy zajmuje więcej niż% najmniej bitu do ukończenia%”), (‘Opóźniony zapis do bazy danych’, ‘% opróżnionych bufs% in% ms% dla db%’), (‘Opóźniony zapis do bazy danych’, ‘% avg%’), (‘Opóźnienie nagrywania i bazy danych’,’% ostatniego niespełnionego celu:% avgWriteLatency% ‘), („Błąd zapisu do bazy danych, dysk pełny”, „Nie można przypisać%”), (‘Błąd łączenia z bazą danych’, ‘% Błąd łączenia%’), („Uruchamianie programu SQL Server”, „Uruchamianie programu SQL Server%”)wstaw do @errorlogexec sp_readerrorlog 0- Uzyskaj wpisy dziennika błędów zgodne z harmonogramem (na przykład)wstaw, aby stać się @notifiable_errorsWybierz e.LogDate, e.ProcessInfo, e.Text, c.error_category.oferowane przez @errorlog AS eZastosuj zagięcie (Wybierać *oferowane przez @errorlog_definition AS e dwhere.Text biorąc pod uwagę, że d.error_pattern) AS cgdzie LogDate> DATEADD (MINUTA, [bezpieczna poczta e-mail] , GETDATE ())- Kiedy linie płyną bezsprzecznie w procesiejeśli @@ ROWCOUNT> 0rozpocząćZADEKLARUJ @logdate @processInfo datetimeZADEKLARUJ Varchara (32)DECLARE @Text varchar (MAX)ZADEKLARUJ @error_category varchar (150)ZADEKLARUJ KURSORA category_cursor DLAwybierz unikalną kategorię_błęduoferowane przez @notifiable_errorsOTWÓRZ kategorię_kursoraWIĘCEJ Z category_cursor IN @error_categoryDURING @@ FETCH_STATUS jest równy 2ROZPOCZĄĆ- Pętle 1 kategoria czasowa- Identyfikacja e-maila + nagłówek tabeli HTMLSELECT @object to @ error_category + ‘- Ostatni’ + konwertuj (varchar (50), @ CheckPeriodInMinute) + ‘Minimum (‘ + konwertuj (varchar (maks), @@ nazwa_serwera) + ‘)’SELECT @ [chroniony adres poczty elektronicznej] _header + ‘
‘ [chroniony adres e-mail s e-mail] _kategoria + ‘(ostatni’ + Konwertuj ( varchar (50), @ CheckPeriodInMinute) + ‘min)
‘PROSZĘ WYBIERZ @ [bezpieczny adres e-mail] + ‘
‘- —– Kursor: zdobądź kilka wpisów dla aktualnej kategorii- Twórz wspólne wiersze HTML- —-DECLARE CURSOR error_cursor FORwybierz LogDate, ProcessInfo, Textoferowane przez @notifiable_errorsgdzie kategoria_błędu = @kategoria_błęduOTWÓRZ kursor_błęduPOBIERZ WIĘCEJ OD error_cursor IN @logdate, @processInfo, @TextUNTIL @@ FETCH_STATUS oznacza 0ROZPOCZĄĆ- wiersze tabeli HTMLselect @HTML_part = ‘
‘zainstaluj @ [zabezpieczenia poczty e-mail] [zabezpieczenia poczty e-mail] _część + ”UZYSKAJ WIĘCEJ Z error_cursor IN @logdate, @processInfo, @Text;KOŃCZYĆ SIĘZAMKNIJ kursor_błęduDEALLOCATE error_cursor- Wyślij koniec tabeli HTML + e-mailzainstaluj w [email chroniony] + ‘
‘ [bezpieczny adres e-mail] _stopkaEXEC msdb.dbo.sp_send_dbmail@ nazwa_profilu oznacza „Profil_DBA”, – Temat = @obiekt, @recipients oznacza „ [poczta e-mail jest zwykle chroniona] ”, @ body_format = ‘HTML’, @body implikuje @HTMLPOBIERZ OBSERWACJI Z category_cursor DO @error_category;KOŃCZYĆ SIĘZAMKNIJ kategorię_kursorDEALLOCATE category_cursorKoniec
Przykładowe litery
Wniosek
Wadą tego podejścia jest to, że muszę dokładnie wiedzieć, o czym chcę być powiadamiany przez e-mail. Jeśli nie używam aktualizacji statusu agenta, jest kilka krytycznych błędów, które muszę zignorować.
Wspaniałą rzeczą jest to, że być może szukam informacji, a nie tylko błędów.
Mam nadzieję, że uznałeś to za interesujące i zasugerowałem, jak uzyskać informacje o swoich problemach z SQL Server.
Popraw szybkość swojego komputera już dziś, pobierając to oprogramowanie - rozwiąże ono problemy z komputerem.
Troubleshoot SQL Server Error Log Email
Problemen Met E-mail Met SQL Server-foutlogboek Oplossen
Solução De Problemas De E-mail De Log De Erros Do SQL Server
SQL Server 오류 로그 이메일 문제 해결
Fehlerbehebung Bei Der E-Mail Mit Dem SQL Server-Fehlerprotokoll
Felsöka E -postmeddelanden För SQL Server -fellogg
Risoluzione Dei Problemi Relativi All’e-mail Del Registro Degli Errori Di SQL Server
Résoudre Les Problèmes Liés à L’e-mail Du Journal Des Erreurs SQL Server
Устранение неполадок электронной почты журнала ошибок SQL Server
Solucionar Problemas De Correo Electrónico Del Registro De Errores De SQL Server