SQL Server内のデフォルトのシステムヘルスセッションイベントはそれぞれ5 MBで、合計4つのファイルがあることがわかります。
過去のイベントでシステムヘルスからデータを取得しようとしていますが、一部の重要な本番サーバーでは、非常に高速にロールオーバーし続けます。何週間かそこにいる人もいます
SQL Serverでファイルをロールオーバーするメカニズムはどのように機能していますか。また、これがいつどのように発生しているのかを確認する方法はありますか?
回答ごとに編集@
したがって、私はシステムの正常性で捕捉されている可能性のある多くの不要なイベントがある可能性があると考えています。これらをどのように見つけて、このシステムヘルスで除外できますか?
また、ファイルサイズを増やして200 MBの4ファイルにするか、10 MBの80ファイルのような小さいサイズのファイルを保持する必要がありますか?どちらがいいですか?
Update @私はすでにこれを回答としてマークしましたが、飛び出した別のことを確認しながら:
ファイルは順番に入力されていません。私は10ファイルにそれぞれ10MBに増やしたと言います。数日前の1〜6個のファイルがすべて10 MBでいっぱいになっているように見えますが、同じ日のファイル7と8は2 MBで、ファイル9と10は完全に10 MBいっぱいです。これは予想されることだと思いますが、なぜこれがこのようなものであるのか興味がありますか?
SQL Serverでファイルをロールオーバーするメカニズムはどのように機能していますか
次のいずれかが発生すると、ファイルはロールオーバーされます。
これは、実際にコマンドを実行している誰かである可能性があります。
ALTER EVENT SESSION [session_name]
ON SERVER
STATE = STOP;
または、サーバーまたはSQL Serverインスタンスが再起動された可能性があります(これが重要な運用サーバーであると述べた場合、これはありそうにありません)。
これがいつどのように起こっているかを確認する方法はありますか?
すべてのファイルが5 MB前後である場合、サーバーは多くのイベントを生成しているだけです。それほど忙しくない運用サーバーがありますが、4つのXEファイルの1つを5 MBのイベントで満たすのに24時間もかかりません。これがスクリーンショットです。これらのファイルの変更日を確認してください。
SSMSのイベントセッションに含まれるイベントを確認するには、[管理]→[拡張イベント]→[セッション]に移動し、[system_health]を右クリックして、[スクリプトセッション]→[作成先]→[新しいクエリエディターウィンドウ]を選択します。
ただし、Microsoftのドキュメント記事 からこれに注意してくださいsystem_healthセッションを使用してください :
システムヘルスセッションを停止、変更、または削除しないことをお勧めします。
したがって、最善の策は、必要なイベントのサブセットとシステムで機能する特定のイベントファイルターゲット設定だけで新しいXEセッションを作成することです。
ファイルが5 MB未満の場合、サーバーまたはイベントセッションが再起動されています。再起動が発生したときにSQL Serverエラーログを確認できます。その場合は、CONTROL SERVER権限を持つユーザーに問い合わせて、XEセッションを停止しているユーザーを確認する必要があります。
また、ファイルサイズを増やして200 MB 4ファイルにするか、10 MB 80ファイルのような小さいサイズのファイルを保持する必要がありますか?どちらがいいですか?
場合によります。 さまざまなファイルの束からのクエリ(読み取り)は不便です。そのため、ファイルの総数を減らして、各ファイルのサイズを増やすだけにします。
そうは言っても、本当に大きなXEファイルを解析しようとしたことがないので、問題が発生する可能性があります。テストして、どちらがシステムに適しているかを確認する必要があります。