SQL Server Agent inicjujący samozakończenie

9

Przez ostatni miesiąc jeden z moich serwerów miał problemy z SQL Server Agent. Zatrzymuje się automatycznie z błędem poniżej, który zdarza się losowo:

Plik wyjściowy agenta Sql
[097] Wykryto wyciek pamięci [204 bajty]
Wyjątek 5 przechwycony w linii 403 pliku e: \ sql9_sp2_t \ sql \ komodo \ src \ core \ sqlagent \ src \ alerter.cpp. SQLServerAgent inicjuje samozakończenie

Poszukałem tego błędu, ale nie otrzymałem wiele informacji na jego temat. Zarówno SQL Server, jak i Agent działają z tym samym kontem domeny; jednak problem dotyczy tylko usługi SQL Server Agent.

Nie mogę również zobaczyć usługi SQL Server Agent w SQL Server Configuration Manager. Sprawdziłem dziennik błędów programu SQL Server i dzienniki Podglądu zdarzeń systemu Windows, ale nie zauważyłem żadnych podejrzanych działań.

Moje ustawienia pamięci są poprawnie skonfigurowane. Serwer ma 32 GB pamięci RAM, a SQL Server ma przypisaną maksymalną pamięć 26 GB.

Szczegóły systemu:

  • SQL Server 2012 SP2 Std Edition 11.0.5058 64-bitowy
  • Windows Server 2008 R2 Ent Edition 64 bit
  • Dedykowane dla SQL Server (żadne inne aplikacje nie działają na serwerze)
  • Serwer został zaktualizowany kilka miesięcy temu z SQL Server 2005 EE do 2012 SE.
  • Nie korzystamy z serwera przekazywania zdarzeń .

Sprawdziłem również bazę danych msdb . Uruchomiłem checkdb i zakończyło się pomyślnie bez żadnych błędów. Potrzebuję twojej pomocy w naprawieniu dwóch rzeczy:

  1. Aby naprawić losowe zatrzymanie usługi agenta SQL Server
  2. Aby dodać usługę SQL Server Agent w SQL Server Configuration Manager

Mamy oprogramowanie innych firm do monitorowania, więc natychmiast otrzymujemy powiadomienie, jeśli usługa agenta przestanie działać. Na razie właśnie uruchamiamy ponownie usługę. Ale chcemy znaleźć podstawową przyczynę.

Uruchomiłem następujące zapytanie zasugerowane przez Seana Gallardiego i odzyskałem 95 wierszy. Nie wiem, jak interpretować wynik.

select * 
from sys.dm_os_loaded_modules 
where name not like '%microsoft%'

Niestety nie mogę opublikować wyników ze względów bezpieczeństwa.

Dopóki nie znajdę rozwiązania tego problemu, dodałem próby ponownej próby do agenta SQL Server, aby mógł on ponownie uruchomić się automatycznie po zatrzymaniu.

SQLPRODDBA
źródło
Czy po zabiciu agenta możesz dostać się na serwer i sprawdzić użycie pliku strony? Istnieją elementy Connect związane z wyczerpaniem pliku strony przez różne aplikacje (w tym HyperBac).
Cody Konior,
Sprawdzę to, kiedy to się powtórzy.
SQLPRODDBA
Czy po uaktualnieniu z SQL Server 2005 EE do SQL Server 2012 SE dokonałeś uaktualnienia? A może zrobiłeś zupełnie nową wersję SQL Server? Pytam, ponieważ na początku 2000 roku natknąłem się na kilka błędów związanych z uaktualnieniami w miejscu, które zostały rozwiązane przez całkowite usunięcie folderu i ponowną instalację programu SQL Server w pustym folderze. (Tak, to było uciążliwe.)
RLF

Odpowiedzi:

1

Ponieważ niedawno zaktualizowałeś kilka miesięcy temu z SQL Server 2005 EE do 2012 SE, powinieneś zapisać i wyczyścić dzienniki zdarzeń, ponieważ SqlAgent może ulec awarii, gdy zobaczy identyfikatory dziennika zdarzeń ze starszej wersji SQL Server. Na przykład agent może ulec awarii, ponieważ odczytuje zdarzenie zarejestrowane przez kompilację programu SQL Server wcześniejszą niż bieżąca kompilacja, która zawiera tylko dane z JEDNYM ciągiem wstawiania, a agent spróbuje sformatować je przy użyciu najnowszych informacji o zasobach, które wymagają DWÓCH łańcuchów. Doprowadziłoby to do krótkiego wycieku pamięci tuż przed zamknięciem, ponieważ dla ciągu, do którego próbuje się wydrukować, jest przydzielony bufor, gdy nastąpi awaria.

O ile usługa agenta nie jest wymieniona w menedżerze konfiguracji, istnieje wiele możliwości: https://support.microsoft.com/en-us/kb/941823

Upewnij się, że korzystasz z programu Configuration Manager 2012

Możesz spróbować odbudować repozytorium WMI: https://blogs.technet.microsoft.com/askperf/2009/04/13/wmi-rebuilding-the-wmi-repository/

stacylaray
źródło