0

.trc過去数か月間、誰が SQL Server にログインしているかを調べるために、複数のファイルを調べようとしています。私はトレースをセットアップしませんでしたが、私が持っているのはたくさんの.trcファイルです。

元:

  • C:\SQLAuditFile2012322132923.trc
  • C:\SQLAuditFile201232131931.trc

これらのファイルを SQL プロファイラーに読み込んで個別に見ることはできますが、ログインをすばやくスキャンできるように、すべてを読み込む方法が必要でした。フィルターを使用するか、さらに良い方法として、それらを SQL Server テーブルにロードしてクエリを実行します。

次を使用して、ファイルをテーブルにロードしようとしました。

 use <databasename>
 GO
 SELECT * INTO trc_table
 FROM ::fn_trace_gettable('C:\SQLAuditFile2012322132923.trc', 10);
 GO

しかし、これを行うと、エラーメッセージが表示されます:

ファイル 'C:\SQLAuditFile2012322132923.trc' が存在しないか、認識可能なトレース ファイルではありません。または、ファイルを開くときにエラーが発生しました。

ただし、ファイルが存在することは知っており、正しい名前を持っています。また、SQL Profiler に読み込んで問題なく表示できるため、認識できるように見えます。

このエラー メッセージが表示される理由を知っている人はいますか?これが機能しない場合は、これらの複数の .trc ファイルをより簡単に分析する別の方法がありますか?

ありがとう!

4

2 に答える 2

1

C:のルートで権限の問題が発生している可能性があります。ファイルをサブフォルダー(c:\ tracefiles \など)に配置し、SQLServerアカウントにそのフォルダーに対する少なくとも明示的な読み取りアクセス許可があることを確認してください。

また、もっと簡単に始めてみてください。

SELECT * FROM ::fn_trace_gettable('C:\SQLAuditFile2012322132923.trc', default);

とにかく、成功したログインイベントを明示的にキャプチャしていない限り、これらのトレースファイルに探している情報が含まれるかどうかはわかりません...これはSQLServerがデフォルトで追跡するものではありません。

于 2012-04-18T17:02:40.987 に答える
0

私はほとんど同じ問題を抱えていたので、 Database Administrators からソリューションをコピーすると思いました。

リモート サーバーで SQL トレースを実行し、トレース ファイルをワークステーションのローカル ディレクトリに転送して、ローカル SQL Server インスタンスのテーブルにデータをロードし、クエリを実行できるようにしました。

最初は、エラーはパーミッションに関連している可能性があると考えていましたが、.trc ファイルを直接 SQL プロファイラーにロードしたり、ファイルとして SSMS にロードしたりすることに問題がなかったため、これを除外しました。

他のいくつかのアイデアを試した後、もう少し考えてみたところ、最終的にはアクセス許可が原因であることがわかりました。クエリはNT AUTHORITY\NETWORK SERVICE、自分の Windows アカウントではなく、ユーザーとして SQL Server プロセス (sqlsrvr.exe) によって実行されていました。

解決策は、トレース ファイルが保存されているディレクトリとトレース ファイル自体に対する読み取り実行のアクセス許可を付与することでした。NETWORK SERVICE

これを行うには、ディレクトリを右クリックし、 [セキュリティ ] タブに移動しNETWORK SERVICE、ユーザーとして追加してから、そのアクセス許可を選択します (これにより、 と Read & Executeも自動的に選択されます)。これらのファイル権限 (ACL) は、ディレクトリの内容に自動的に反映されます。ReadList folder contents

コマンド ラインを使用する場合は、次のコマンドを実行して、ディレクトリとその内容に必要なアクセス許可を付与できます。

icacls C:\Users\anthony\Documents\SQL_traces /t /grant "Network Service:(RX)"
于 2014-07-15T12:51:02.433 に答える