Azure SQL Database で拡張イベントを使ってみよう
Microsoft Japan Data Platform Tech Sales Team
坂本 禎尚
Azure SQL Database で拡張イベントを使う方法は、他の方の Blog でも取り上げられていますが、今回はできるだけ GUI を使い最小限のシンプルな手順で、クエリ一つ一つの実行時間を取得するというところまでをご紹介します。
Azure SQL Database では、SQL Server でおなじみの SQL Server プロファイラー、SQL Server トレースが現時点ではサポートされておりません。したがって、アプリケーションから実行された SQL 文の各々の実行時間等を取得する際にはプロファイラーやトレースの代わりに拡張イベントを使う必要があります。
実は Azure SQL Database における拡張イベントは 2015 年 10 月に Public Preview になって未だ GA はしていない状況なのですが、近いうちに GA されることを願いつつ今回の記事をお届けします。
以下は、手順の概要です。
- Azure のポータルで、拡張イベントの出力先となる Blob コンテナへの接続先情報を取得します。
- 1 で取得した情報をもとに、Azure SQL Database から Blob コンテナに接続する為の資格情報を作成します。
- 拡張イベントの設定を実施します。
- 拡張イベントを開始し、イベント ファイルを取得します。その後、イベント ファイルを使って、クエリの実行時間を特定します。
1.Azure のポータルで、拡張イベントの出力先となる Blob コンテナへの接続先情報を取得します。
拡張イベント出力先の Blob コンテナの URL と SAS(Shared Access Signature)を Azure のポータルから取得します。
2. 1 で取得した情報をもとに、Azure SQL Database から Blob コンテナに接続する為の資格情報を作成します。
SQL Server Management Studio を開き、クエリを実行します。(ここだけ唯一 GUI では設定できない部分です)
※今回使用している SQL Server Management Studio のバージョンは 13.0.15900.1 です。バージョンの確認は、[ヘルプ]ー[バージョン情報]で確認可能です。
3. 拡張イベントの設定を実施します。
SQL Server Management Studio を使って実施していきます。
- sp_statement_completed : ストアド プロシージャ内のステートメントが完了した時に発生するイベント
- sql_statement_completed : Transact-SQL ステートメントが完了した時に発生するイベント
4. 拡張イベントを開始し、イベント ファイルを取得します。その後、イベント ファイルを使って、クエリの実行時間を特定します。
拡張イベントは SQL Server でも、SQL Server 2008 以降で使える大変便利な情報収集ツールです。
是非これを機会に使い方をマスターして、SQL Server でもご利用下さい。