皆さん、こんにちは。 BI Data Platform サポートチームです。
今回は、イベントログに SQL Server 関連のパフォーマンス ライブラリで 警告 2003 が発生した場合の対処方法について紹介します。
Microsoft-Windows-Perflib: 警告: 2003: "MSSQLSERVER" サービスのパフォーマンス ライブラリ "perf-MSSQLSERVER-sqlctr**.*.****.*.dll" の構成情報が、レジストリに保存されている信頼されたパフォーマンスライブラリの情報に一致しませんでした。このライブラリの関数は信頼されているものとして処理されません。 |
[原因]
SQL Server のパフォーマンス ライブラリ "perf-MSSQLSERVER-sqlctr**.*.****.*.dll" のファイル作成時刻やファイルサイズが、レジストリに格納されている情報と一致していない場合に発生します。
[影響]
パフォーマンス モニター/データ コレクター より、SQL Server 関連のパフォーマンス カウンタ情報の採取に失敗する可能性があります。
[対処方法]
SQL Server のパフォーマンス ライブラリ を再登録することで、警告 2003 は解消します。
# SQL Server のパフォーマンス ライブラリ を再登録手順
※ 本手順は SQL Server 2016 の手順を紹介していますが、SQL Server 2005 から 最新の SQL Server まで実施する作業は同じです。
1) パフォーマンス モニター/データ コレクター より、SQL Server 関連のパフォーマンス カウンタ情報を採取している場合は、採取を停止します。
2) コマンド プロンプトを “管理者として実行” より起動します。
3) SQL Server のパフォーマンス ライブラリ が配置されているパスに カレント ディレクトリ を移動します。
※ SQL Server のインストールパスが既定のパスと異なる場合は、正しいパスに変更します。
# SQL Server 2016 (既定のインスタンスの場合)
> cd C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn
# SQL Server 2016 (名前付きインスタンスの場合)
> cd C:\Program Files\Microsoft SQL Server\MSSQL13.<名前付きインスタンス名>\MSSQL\Binn
4) SQL Server 関連のカウンタを削除するため、以下のコマンドを実行します。
# SQL Server 2016 (既定のインスタンスの場合)
> unlodctr MSSQLServer
# SQL Server 2016 (名前付きインスタンスの場合)
> unlodctr MSSQL$<名前付きインスタンス名>
# コマンド実行例 : SQL Server 2016 名前付きインスタンス “S2K16” の場合 C:\Program Files\Microsoft SQL Server\MSSQL13.S2K16\MSSQL\Binn>unlodctr MSSQL$S2K16 MSSQL$S2K16 のカウンター名と説明を削除しています |
5) 以下のコマンドを実行し、SQL Server のパフォーマンス ライブラリ を再登録します。
# SQL Server 2016 (既定のインスタンスの場合)
> lodctr perf-MSSQLSERVERsqlctr.ini
# SQL Server 2016 (名前付きインスタンスの場合)
> lodctr perf-MSSQL$<名前付きインスタンス名>sqlctr.ini
# コマンド実行例 : SQL Server 2016 名前付きインスタンス “S2K16” の場合 C:\Program Files\Microsoft SQL Server\MSSQL13.S2K16\MSSQL\Binn>lodctr perf-MSSQL$S2K16sqlctr.ini |
6) SQL Server のサービスを再起動後、イベントログ (アプリケーション) に 警告 2003 が出力されていないことを確認します。
※ 本Blogの内容は、2017年9月現在の内容となっております。