先月、私のサーバーの1つでSQL Serverエージェントの問題が発生しています。ランダムに発生する以下のエラーで自動的に停止します。
SQLエージェント出力ファイル
[097]メモリリークが検出されました[204バイト]
例外5がファイルe:\ sql9_sp2_t\sql\komodo\src\core\sqlagent\src\alerter.cppの403行目でキャッチされました。自己終了を開始するSQLServerAgent
私はこのエラーをググりましたが、それについて多くの情報を得ませんでした。 SQL Serverとエージェントの両方が同じドメインアカウントで実行されています。ただし、問題はSQL Serverエージェントサービスでのみ発生します。
SQL Server構成マネージャーでSQL Serverエージェントサービスを表示することもできません。 SQL ServerのエラーログとWindowsイベントビューアのログを確認しましたが、不審なアクティビティは確認されませんでした。
私のメモリ設定は正しく構成されています。サーバーには32GB RAMがあり、SQL Serverは26GBの最大メモリを使用するように割り当てられています。
システムの詳細:
msdbデータベースもチェックしました。その上でcheckdbを実行し、エラーなしで正常に完了しました。 2つのことを修正するためにあなたの助けが必要です:
監視用のサードパーティソフトウェアがあるため、エージェントサービスが停止するとすぐに通知されます。とりあえず、サービスを再起動しています。しかし、根本的な原因を見つけたいのです。
Sean Gallardyによって提案された次のクエリを実行し、95行を返しました。結果の解釈方法がわかりません。
select *
from sys.dm_os_loaded_modules
where name not like '%Microsoft%'
残念ながら、セキュリティ上の理由で結果を掲載することはできません。
この問題の解決策が見つかるまで、SQL Serverエージェントに再試行を追加して、停止時に自動的に再起動できるようにしました。
最近数か月前にSQL Server 2005 EEから2012 SEにアップグレードしたため、SqlAgentがSQL Serverの古いビルドからのイベントログIDを検出するとクラッシュする可能性があるため、イベントログを保存してクリアする必要があります。たとえば、現在のビルドよりも前のSQL Serverビルドによってログに記録されたイベントを読み取るため、エージェントはクラッシュする可能性があります。これには、1つの挿入文字列のデータのみが含まれ、エージェントは、2つの文字列を必要とする最新のリソース情報を使用してフォーマットしようとします。クラッシュが発生したときに出力しようとしている文字列にバッファが割り当てられるため、シャットダウンの直前に短時間のメモリリークが発生します。
構成マネージャーにリストされていないエージェントサービスに関する限り、複数の可能性があります。 https://support.Microsoft.com/en-us/kb/94182
2012 Configuration Managerを実行していることを確認します
WMIリポジトリの再構築を試すことができます: https://blogs.technet.Microsoft.com/askperf/2009/04/13/wmi-rebuilding-the-wmi-repository/