SQL Databaseに対して実行された操作に関する情報を出力するSQL Server動的管理ビューレファレンス(38)

「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回は、Azure SQL Databaseに対して実行された操作に関する情報の出力について解説します。

» 2021年08月30日 05時00分 公開
[椎名武史@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

SQL Server動的管理ビュー一覧

 本連載では、「Microsoft SQL Server(以下、SQL Server)」で使用可能な動的管理ビューについて、動作概要や出力内容などを紹介していきます。今回は動的管理ビュー「sys.dm_operation_status」における、Azure SQL Database(SQL Database)に対して実行された操作に関する情報の出力について解説します。対応バージョンは「Azure SQL Database」です。

概要

 「Azure Portal」や「SQL Server Management Studio」から、SQL Databaseに対してさまざまな操作を実施できます。「sys.dm_operation_status」はSQL Databaseに対して実行された操作に関する情報を出力します。現在は、SQL Databaseに関する操作のみ出力されます。

出力内容

列名 データ型 説明
session_activity_id uniqueidentifier 操作ID
resource_type int 操作が実行される対象のリソースの種類。次のいずれかになる
 0=SQL Database
resource_type_desc nvarchar(2048) 操作が実行される対象のリソースの種類の説明。次のいずれかになる
 Databaseのみ
major_resource_id sql_variant 操作が実行される対象のSQL Databaseやサーバの名前
minor_resource_id sql_variant 内部使用のみ
operation nvarchar(60) SQL Databaseに対して実行される操作
state tinyint 操作の状態。次のいずれかになる
 0=保留
 1=実行中
 2=完了
 3=失敗
 4=取り消し
state_desc nvarchar(120) 操作の状態の説明。次のいずれかになる
 PENDING=操作はリソースまたはクォータが利用可能になるのを待機
 IN_PROGRESS=操作が開始され、実行中
 COMPLETED=操作が正常に完了
 FAILED=操作が失敗
 CANCELLED=ユーザーの要求によって操作が停止
percent_complete int 操作が完了した割合。有効な値がない場合は次のいずれかになる
 0=操作が開始されていない
 50=実行中
 100=操作が完了
error_code int 失敗した操作中に発生したエラーを示すコード
error_desc nvarchar(2048) 失敗した操作中に発生したエラーの説明
error_severity int 失敗した操作中に発生したエラーの重大度レベル
error_state int 将来使用するために予約されている
start_time datetime 操作が開始した時点のタイムスタンプ
last_modify_time datetime 最後に変更された時点のタイムスタンプ

動作例

 SQL Databaseに関する操作が記録されるため、コンテキストがユーザーデータベースの場合は1行も出力されず、コンテキストを「master」に切り替えて実行する必要があります。SQL Databaseに対して変更や再作成などの操作を実施し、「sys.dm_operation_status」を実行します(図1)。

図1 図1 SQL Databaseに対する操作が出力された

 「operation」列では操作の概要が出力されますが、どのような「ALTER」操作を実施したかなど、詳細なコマンドまでは出力されません。実行中の操作は「state」列が「1」、「state_desc」列が「IN_PROGRESS」として出力され、「percent_complete」列で大まかな進捗(しんちょく)を確認できます。SQL Databaseに対して「ALTER DATABASE」などを実行し、クエリの結果としては「コマンドは正常に完了しました」と出力されたとしても、内部でエラー終了している場合があります(図2)。

図2 図2 クエリは正常終了しても、内部でエラーが発生している場合がある

 そのため「sys.dm_operation_status」の出力結果から「state」列が「3」、「state_desc」列が「FAILED」と表示されている行が存在しないか確認し、存在する場合には「error_code」列や「error_desc」列でエラーの詳細を確認する必要があります。

※本Tipsは、「Azure SQL Database(V12)」での動作を想定して解説しています。

筆者紹介

椎名 武史(しいな たけし)

日本ユニシス株式会社所属。Microsoft MVP for Data Platform(2017〜)。入社以来 SQL Serverの評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。SQL Serverのトラブル対応で社長賞の表彰を受けた経験も持つ。休日は学生時代の仲間と市民駅伝に参加し、銭湯で汗を流してから飲み会へと流れる。

伊東 敏章(いとう としあき)

日本ユニシス株式会社所属。入社以来SQL Server一筋で評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。社内のプログラミングコンテストで4回の優勝経験も持つ。趣味は輪行で週末は自転車を持っての旅行。目標は色々な日本百選を制覇すること。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。