

### 前提・実現したいこと

Microsoft SQL Server 2016の監査機能についてです。  
あるテーブルのupdate insert deleteに対して監査を設定しています。  
しかし、過去の.sqlauditファイルを読み込んで開くと  
正しく読み込めず下記のようなエラーメッセージなどが表示されます。

このままでは監査機能の意味がないので、正しくファイルを読み込む方法をご教示いただけませんでしょうか。  
他に必要な情報があるようでしたらご指摘いただければと思います。

### 発生している問題・エラーメッセージ

`ログ ビューアーによって、このログ エントリの情報が読み取られませんでした。原因: インデックスが配列の境界外です。。内容:`

### 補足情報（FW/ツールのバージョンなど）

現在更新中の.sqlauditファイルのみ正しく読み込むことができます。  
SQL Server Management Studioは 16.xです。  
OSはWindows Server 2016です。  
ログビューアーの何かしらの制約でしょうか。  
.sqlauditファイルサイズの問題でしょうか。  
監査のデータをファイル出力ではなくアプリケーションログとして出力することで解決するでしょうか。  
毎日のイメージバックアップの取得のため、OSがシャットダウンされるのですが、その前に監査を停止させるようなことはしていません。  
[このサイト](https://social.msdn.microsoft.com/Forums/sqlserver/ja-
JP/cdc8b708-9074-4e80-b630-3d16f4d723e9/30435266191252512464125011244912452125231239812496124831246312?forum=sqlserverja)の内容については承知しており、読み込んでいる.sqlauditファイルは出力先から移動せず読み込んでいます。

### 追記

マルチポストとの指摘をいただきました。  
幅広いチャンネルにて回答を得たかったため  
teratailさん  
Yahoo知恵袋さん  
にも同内容を投稿しています。  
一番はやく回答をいただけたところ以外はクローズする所存です。

### 自己解決

依然としてログビューアーで.sqlauditファイルのみ正しく読み込むことはできていません。  
しかし、代替手段として以下がありましたのでこちらを紹介したいと思います。

[sys.fn_get_audit_file (Transact-SQL)](https://docs.microsoft.com/ja-
jp/sql/relational-databases/system-functions/sys-fn-get-audit-file-transact-
sql?view=sql-server-2016)

この関数を使うと過去の.sqlauditファイルの内容を取得できました。

最後に、マイクロソフトに本件を報告する方法をご存知の方がいらっしゃれば、ご教示いただきたく存じます。


CC BY-SA 4.0
2018-10-13T10:08:43.030
49244
2019-02-23T14:28:52.573
2019-02-23T14:28:52.573
18906
18906
question
windows sql-server
SSMSの監査についてファイルが正しく読み込めない