web-dev-qa-db-ja.com

system_health拡張イベントセッションを開始できません

一部のSQL Serverインスタンスでは(まだパターンが見つかりませんでした)、このセッションを手動で開始しようとすると、次のエラーが発生します。

ターゲット「5B2DA06D-898A-43C8-9309-39BBBE93EBBD.package0.event_file」の場合、渡されたパラメーター「filename」は無効です。インデックス0のターゲットパラメータが無効です(Microsoft SQL Server、エラー:25641)

SQL Serverログを調べると、インスタンスが起動するたびに(つまり、パッチを適用するためにWindowsを再起動した後)、次のようになります。

エラー:25641、重大度:16、状態:0。ターゲット "5B2DA06D-898A-43C8-9309-39BBBE93EBBD.package0.event_file"の場合、渡されたパラメーター "filename"は無効です。インデックス0のターゲットパラメータが無効です

エラー:25710、重大度:16、状態:1。イベントセッション「system_health」を開始できませんでした。現在のセッションの以前のエラーを参照して原因を特定し、関連する問題を修正してください。

エラー:25709、重大度:16、状態:1。1つ以上のイベントセッションを開始できませんでした。現在のセッションの以前のエラーを参照して原因を特定し、関連する問題を修正してください。

誰かがこの問題を観察しましたか?セッションの定義はパスを示すのではなく、単に.xelファイルの名前を示しているため、権限が原因であると思います。つまり、SQL Serverのログフォルダーに直接書き込み、SQL Serverサービスアカウントにはフルアクセスが許可されます。

AlwaysOn_healthセッションでも同じ問題が発生します。

よろしくお願いします!

2
Nicolas Souquet

まず、問題のあるフォルダーを特定します。 SSMSで、結果をグリッドに設定して、次のクエリを実行します。

SELECT target_data = CONVERT(xml, target_data) 
  FROM sys.dm_xe_session_targets
  WHERE target_package_guid = '5B2DA06D-898A-43C8-9309-39BBBE93EBBD'
  AND target_name = N'event_file';

1つの行が返され、グリッドの結果からその行をクリックできるはずです。これにより、次のようなXMLドキュメントの新しいタブが開きます。

<EventFileTarget truncated="0">
  <Buffers logged="0" dropped="0" />
  <File name="C:\...path_to_xe_files...\system_health_0_131278486394000000.xel" />
</EventFileTarget>

ファイル名にパスコンポーネントが含まれていない場合、システムレジストリを調べて、拡張イベントのデフォルトファイルの場所を確認できます。このコードはそれを行うべきです:

EXEC master.sys.xp_instance_regread
       @rootkey      = N'HKEY_LOCAL_MACHINE'
       , @key          = N'SOFTWARE\Microsoft\MSSQLServer\CPE'
       , @value_name   = N'ErrorDumpDir';

拡張イベントファイルが保存されているパスを取得したら、次のようにしてください。

BACKUP DATABASE model TO DISK = 'C:\...path_to_xe_files...\model_trash.bak'
  WITH INIT;

これは、問題が何であるかをよりよく理解するはずです-権限である可能性、フォルダーが存在しない可能性(インスタンスの構成が移動された可能性など)、さまざまな可能性があります。しかし、これは正しい方向を示し、より適切なエラーメッセージを表示するはずです。

5
Aaron Bertrand