SQL SERWER SP_READERRORLOG

SQL SERWER SP_READERRORLOG

Dzienniki odnoszą się do serii rekordów utworzonych przez aplikację w celu opisania szczegółów zdarzeń i działań wykonanych przez aplikację. Prawie wszystkie aplikacje wdrażają mechanizm rejestrowania, który pomaga programistom i użytkownikom w rozwiązywaniu problemów, które mogą się pojawić.

Jak można się domyślić, SQL Server zapewnia nam dzienniki, które pozwalają nam śledzić i rozwiązywać problemy, które występują na serwerze. W niektórych przypadkach możesz użyć dzienników SQL Server, aby odzyskać po awarii bazy danych.

W tym samouczku omówiono, w jaki sposób możesz użyć procedury przechowywanej SP_Readerrorlog do odczytania dzienników utworzonych przez SQL Server i Agent SQL Server Agent.

Składnia procedury SP_Readerrorlogs ()

Poniżej pokazuje składnię procedury przechowywanej SP_Readerrorlog na serwerze SQL:

SP_READERRORLOG
@p1 int = 0,
@p2 int = null,
@p3 nvarchar (4000) = null,
@p4 nvarchar (4000) = null

Zaakceptowane argumenty

Procedura przyjmuje następujące argumenty zdefiniowane w podanej składni:

  1. @p1 - To określa dziennik, który chcesz wyhontować jako wartość całkowitą. Bieżący dziennik błędów ma wartość 0, jeden wcześniej ma wartość 1, drugą wcześniej o wartości 2 itp.
  2. @p2 - Parametr P2 umożliwia zdefiniowanie produktu, którego dzienniki są tym, co chcesz postrzegać jako wartość całkowitą z 1 dla SQL Server i 2 dla agenta SQL Server Agent. Domyślnie procedura zwraca dzienniki dla serwera SQL.
  3. @p3 - Parametr P3 pozwala zdefiniować ciąg, w którym chcesz filtrować podczas pobierania dzienników. Domyślnie ta wartość jest null.
  4. @p4 - Wreszcie parametr P4 pozwala zdefiniować drugi ciąg do wyszukiwania podczas filtrowania dzienników. Jest to przydatne, gdy musisz udoskonalić wzór wyszukiwania.

Następnie funkcja zwraca zawartość dziennika błędów, pasując do określonego wzoru.

SQL Server tworzy dziennik błędów dla każdej instancji, w którym serwer jest uruchamiany. Dzienniki błędów nazywane są ErrorLog1, ErrorLog2, ErrorLog3 itp.

Przykładowe użycie:

Poniższe przykłady pokazują, w jaki sposób możemy użyć procedury przechowywanej SP_Readerrorlog do odczytania dostępnych dzienników.

Za pomocą SP_Readerrorlog () do odczytania bieżącego dziennika błędów

Poniższy przykład używa SP_READERRORLOG () do odczytania bieżącego dziennika błędu:

exec sp_readerrorlog;

Bez parametrów poprzednie zapytanie zwraca bieżący dziennik błędów dla serwera SQL.

Przykładowe dane wyjściowe jest następujące:

Za pomocą SP_Readerrorlog () do odczytania błędu w określonym indeksie

Aby odczytać ErrorLog3 dla SQL Server, możemy uruchomić zapytanie w następujący sposób:

EXEC SP_READERRORLOG 3, 1;

W takim przypadku procedura powinna zwrócić zawartość pliku ERRORLOLOG3 dla serwera SQL.

Znajdź dziennik z określonym ciągiem

Aby filtrować dzienniki za pomocą określonego ciągu, możemy uruchomić następujące zapytanie:

exec sp_readerrorlog 5, 1, „początek”, „master”;

W takim przypadku poprzednie zapytanie powinno zwrócić dzienniki, gdy uruchomi się główna baza danych. Przykładowe dane wyjściowe jest jak pokazano następująco:

LogDate | procesinfo | tekst |
-----------------------+-----------+------------------------------+
2022-10-17 14:44:28.550 | SPID9S | Uruchomienie bazy danych „Master”.|

Wniosek

W tym artykule nauczyłeś się, jak korzystać z procedury przechowywanej SQL Server SP_Readerrorlog do odczytania dzienników błędów na serwerze SQL.

Dziękuje za przeczytanie!