セッションの状態に関する情報を出力するSQL Server動的管理ビューレファレンス(73)

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

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

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

SQL Server動的管理ビュー一覧

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

概要

 「sys.dm_exec_requests」では、実行中の要求の一覧を出力できました。しかし、アプリケーション側で処理を実行しており、SQL Server側では何も処理をしていないような状態の情報は取得できませんでした。「sys.dm_exec_sessions」では、実行中であるかどうかにかかわらず、セッションの状態に関する情報を出力します。

出力内容

列名 データ型 説明
session_id smallint セッションID
login_time datetime セッションが確立された時刻
host_name nvarchar(128) 接続元のホスト名
program_name nvarchar(128) 接続元のプログラム名
host_process_id int 接続元のプログラムのプロセスID
client_version int 接続に使用されるTDSプロトコルのバージョン
client_interface_name nvarchar(32) 接続に使用しているライブラリまたはドライバの名前
security_id varbinary(85) ログインに関連付けられたセキュリティID
login_name nvarchar(128) ログイン名
nt_domain nvarchar(128) Windows認証の場合のドメイン名
nt_user_name nvarchar(128) Windows認証の場合のユーザー名
status nvarchar(30) セッションの状態。次のいずれかになる
 Running
 Sleeping
 Dormant
 Preconnect
context_info varbinary(128) セッションのコンテキスト(CONTEXT_INFO)の値
cpu_time int CPU時間(ミリ秒単位)
memory_usage int メモリ使用ページ数(8KB単位)
total_scheduled_time int 実行予定時間の合計(ミリ秒単位)
total_elapsed_time int 経過時間(ミリ秒単位)
endpoint_id int エンドポイントのID
last_request_start_time datetime 要求が最後に開始された時刻
last_request_end_time datetime 要求が最後に完了した時刻
reads bigint 読み取りの数
writes bigint 書き込みの数
logical_reads bigint 論理読み取りの数
is_user_process bit ユーザーセッションであるかどうかのフラグ
text_size int TEXTSIZEの設定
language nvarchar(128) LANGUAGEの設定
date_format nvarchar(3) DATEFORMATの設定
date_first smallint DATEFIRSTの設定
quoted_identifier bit QUOTED_IDENTIFIERの設定
arithabort bit ARITHABORTの設定
ansi_null_dflt_on bit ANSI_NULL_DFLT_ONの設定
ansi_defaults bit ANSI_DEFAULTSの設定
ansi_warnings bit ANSI_WARNINGSの設定
ansi_padding bit ANSI_PADDINGの設定
ansi_nulls bit ANSI_NULLSの設定
concat_null_yields_null bit CONCAT_NULL_YIELDS_NULLの設定
transaction_isolation_level smallint トランザクション分離レベル。次のいずれかになる
 「0」=Unspecified
 「1」=ReadUncomitted
 「2」=ReadCommitted
 「3」=Repeatable
 「4」=Serializable
 「5」=Snapshot
lock_timeout int LOCK_TIMEOUTの設定
deadlock_priority int DEADLOCK_PRIORITYの設定
row_count bigint 返された行数
prev_error int 最後に返されたエラーのID
original_security_id varbinary(85) ログイン名に関連付けられたセキュリティID
original_login_name nvarchar(128) ログイン名
last_successful_logon datetime 最後にログオンが成功した時間
last_unsuccessful_logon datetime 最後にログオンが失敗した時間
unsuccessful_logons bigint 最後にログオンが成功した時間とログオン時間の間にログオンが失敗した回数
group_id int ワークロードグループのID
database_id smallint セッションの現在のデータベースのID
authenticating_database_id int 認証するデータベースのID
open_transaction_count int 開いているトランザクションの数

動作例

 SQL Serverへのセッションがある環境で「sys.dm_exec_sessions」を実行すると、セッションの状態に関する情報が出力されます(図1)。

図1 図1 セッションの状態が確認できる

 表示されるセッションはユーザーセッションだけではないため、「session_id」列が「50」未満のセッション情報も出力されます。「sys.dm_exec_requests」では「status」列が「running」の処理が確認できますが、「sys.dm_exec_sessions」では「status」列が「sleeping」となっているセッションの情報も確認できます。

 「last_successful_logon」列、「last_unsuccessful_logon」列、「unsuccessful_logons」列を表示するには、「情報セキュリティ国際評価基準への準拠を有効にする」の設定を変更し、ログイン監査を有効にする必要があります。「情報セキュリティ国際評価基準への準拠を有効にする」の設定を変更するには「sp_configure」で「show advanced options」を有効にしたうえで、「common criteria compliance enabled」を有効にします。

※本Tipsは、「Windows Server 2019」上に「SQL Server 2019 RTM」をインストールした環境を想定して解説しています。

筆者紹介

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

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

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

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


Copyright © ITmedia, Inc. All Rights Reserved.

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

注目のテーマ

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

RSSについて

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

メールマガジン登録

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