Агент SQL Server ініціює самозавершення


9

Протягом останнього місяця один із моїх серверів стикався з проблемами з агентом SQL Server. Він автоматично зупиняється з помилкою нижче, що відбувається випадковим чином:

Вихідний файл агента Sql
[097] Виявлено витік пам'яті [204 байти]
Виняток 5, що потрапив у рядок 403 файлу e: \ sql9_sp2_t \ sql \ komodo \ src \ core \ sqlagent \ src \ alerter.cpp. SQLServerAgent ініціює самозавершення

Я погукував цю помилку, але не отримав багато інформації про неї. І SQL Server, і агент працюють з одним і тим же обліковим записом домену; однак проблема полягає лише у службі агента SQL Server.

Я також не можу побачити службу агента SQL Server в Менеджері конфігурацій SQL Server. Я перевірив журнал помилок SQL Server та журнал перегляду подій Windows, але не побачив підозрілих дій.

Мої настройки пам'яті налаштовані правильно. На сервері є 32 ГБ оперативної пам’яті, а SQL Server призначений для використання макс. Пам'яті в 26 ГБ.

Деталі системи:

  • SQL Server 2012 SP2 Std Edition 11.0.5058 64 біт
  • 64-розрядна версія Windows Server 2008 R2 Ent Edition
  • Виділено для SQL Server (на сервері не запускаються інші програми)
  • Сервер було оновлено кілька місяців тому з SQL Server 2005 EE до 2012 SE.
  • Ми не використовуємо сервер переадресації подій .

Я також перевірив базу даних msdb . На нього побіг checkdb, і він успішно завершився без помилок. Мені потрібна ваша допомога у вирішенні двох речей:

  1. Щоб виправити випадкову зупинку служби агента SQL Server
  2. Щоб додати службу агента SQL Server в Менеджер конфігурацій SQL Server

У нас є стороннє програмне забезпечення для моніторингу, тому ми отримуємо повідомлення негайно, якщо служба агентів припиняється. Наразі ми лише запускаємо послугу. Але ми хочемо знайти першопричину.

Я запустив наступний запит, запропонований Шоном Галларді, і отримав 95 рядів назад. Я не знаю, як інтерпретувати результат.

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

На жаль, я не можу опублікувати результати з міркувань безпеки.

Поки я не знайшов рішення цієї проблеми, я додав спроби повторних спроб до агента SQL Server, щоб він міг автоматично перезапуститись, коли він зупинився.


Коли агент вбивається, чи зможете ви потрапити на сервер і використати файл перевірки сторінки? Є елементи пункту Connect про це, спричинене вичерпанням файлу сторінки різними програмами (включаючи HyperBac).
Коді Коніор

Я перевірю це, коли це повториться.
SQLPRODDBA

Під час оновлення з SQL Server 2005 EE до SQL Server 2012 SE ви здійснили оновлення? Або ви зробили абсолютно нову партію SQL Server? Запитую, бо на початку 2000-х я зіткнувся з декількома помилками на місці оновлення, які були вирішені повним видаленням папки та перевстановленням SQL Server у порожню папку. (Так, це було неприємністю.)
RLF

Відповіді:


1

Оскільки ви нещодавно оновили кілька місяців тому з SQL Server 2005 EE до 2012 SE, вам слід зберегти та очистити журнали своїх подій, оскільки SqlAgent може вийти з ладу, коли він побачить ідентифікатори журналу подій зі старої збірки SQL Server. Наприклад, Агент може вийти з ладу, оскільки він зчитує подію, зареєстровану збіркою SQL Server раніше, ніж поточна збірка, яка містить лише дані з одним рядком вставки, і агент спробує відформатувати її, використовуючи останню інформацію про ресурс, яка вимагає ДВОХ рядків. Це призведе до короткого витоку пам’яті безпосередньо перед тим, як воно вимикається, оскільки буфер виділяється для рядка, який він намагається надрукувати, коли відбувається збій.

Що стосується служби агента, яка не вказана в диспетчері конфігурацій, існує кілька можливостей: https://support.microsoft.com/en-us/kb/941823

Переконайтеся, що ви працюєте з Менеджером конфігурацій 2012 року

Ви можете спробувати відновити сховище WMI: https://blogs.technet.microsoft.com/askperf/2009/04/13/wmi-rebuilding-the-wmi-repository/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.