SQL Server 2008 以降では拡張イベントが導入されました。
SQL Server 拡張イベント
拡張イベントを使用すると SQL Server の様々なイベントを取得しロギングすることが可能です。
SQL Server 2008 R2 まで拡張イベントを取得する際にはクエリベース ()CREATE EVENT SESSION) でイベントセッションを作成する必要がありました。
Denali では SSMS から拡張イベントを設定することが可能となっています。
今回の投稿では SSMS のGUI を使用した拡張イベントの設定についてまとめてみたいと思います。
■SSMS の GUI で拡張イベントを設定
SQL Server 2008 R2 の SSMS では、管理の下は以下のようになっています。
SSMS では拡張イベントが GUI ベースで作成できるようになっています。
# system_health は標準で設定されている拡張イベントになります。
それでは、実際に拡張イベントを作成してみたいと思います。
- [セッション] を右クリックして、[新規セッション ウィザード] をクリックします。
- [次へ] をクリックします。
- イベントセッション名を入力し、[次へ] をクリックします。
- [次へ] をクリックします。
- キャプチャするイベントを選択して、[>] をクリックし、[次へ] をクリックします。
今回はデータベースのファイルサイズが変更されたときに発生する [database_file_size_change] を設定しています。 - どのイベントでも共通で取得が可能なグローバルフィールドから取得する項目を選択して、[次へ] をクリックします。
- キャプチャするイベントのフィルターを設定し、[次へ] をクリックします。
- 分析用データの収集方法を選択して、[次へ] をクリックします。
今回はライブデータのみ取得をするので、[最新のデータのみを使用する] を選択しています。 - [完了] をクリックします。
このタイミングでスクリプトを作成することもできます。 - 作成後にすぐに情報を取得したいため、両方のチェックを有効にし、[閉じる] をクリックします。
以上で設定は完了です。
それではテーブルにデータを挿入し、ファイルの自動拡張を発生させてみたいと思います。
自動拡張が発生するとファイルサイズが変更されるため、拡張イベントにイベントとして出力されます。
現在は一覧には、[name] と [timestamp] しか出力されていませんが、ヘッダ部分を右クリックして [列の選択] をクリックすることで一覧の出力内容を増やすことが可能です。
2008 R2 のインスタンスに接続をした場合は、[拡張イベント] は表示されないため GUI からの設定は Denali のみの機能になるようですね。
拡張イベントの情報については [dm_xe_objects] で確認をすることができそうです。
SQL Server プロファイラーでは取得できない情報も拡張イベントでは取得することが可能ですので、SQL Server の状態解析の幅が増えてきそうですね。