サーバ全体の接続情報を確認するSQL Server動的管理ビューレファレンス(46)

「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回は、サーバ全体の接続情報の確認について解説します。

» 2021年09月27日 05時00分 公開
[伊東敏章@IT]

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

SQL Server動的管理ビュー一覧

 本連載では、「Microsoft SQL Server(以下、SQL Server)」で使用可能な動的管理ビューについて、動作概要や出力内容などを紹介していきます。今回は動的管理ビュー「sys.dm_exec_connections」における、サーバ全体の接続情報の確認について解説します。対応バージョンは、SQL Server 2012以降です。

概要

 クライアントアプリケーションがSQL Serverで何らかの要求を実行するためには、事前にSQL Serverに接続する必要があります。

 クライアントアプリケーションからSQL Serverへ接続する方法は単一ではなく、共有メモリや名前付きパイプ、TCPなどの通信プロトコルやSQL認証、NTML認証、Kerberos認証といった認証方式の選択が明示的、または暗黙的に行われています。

 そのため、SQL Serverで通信や接続の問題が発生した場合には、クライアントアプリケーションとSQL Serverがどのような方法で接続されているのか、確認が必要となる場合があります。クエリの実行で問題が発生した場合にも、接続元についての情報を調査するために、接続に関する情報が必要となるでしょう。

 「sys.dm_exec_connections」動的管理ビューでは、サーバ全体で、現在存在している接続情報の一覧の出力が可能です。接続情報には、接続に使用されている通信プロトコルや認証方式、接続元、接続先のIPアドレスやポート番号などの情報が含まれています。

出力内容

列名 データ型 説明
session_id int この接続に関連付けられているセッションの識別
NULL値が許可される
most_recent_session_id int この接続に関連付けられた最新の要求セッションID(SOAP接続は別のセッションで再利用できる)
NULL値が許可される
connect_time datetime 接続が確立されたタイムスタンプ
net_transport nvarchar(40) この接続で使用される物理的な転送プロトコル
接続で複数のアクティブな結果セット(MARS)が有効な場合、「Session」が返される
protocol_type nvarchar(40) ペイロードのプロトコルタイプ
「TDS」(TSQL)と「SOAP」が区別される
protocol_version int この接続に関連付けられたデータアクセスプロトコルのバージョン
endpoint_id int 接続の種類を区別する識別子
encrypt_option nvarchar(40) この接続で暗号化が有効かどうかを表すブール値を表す文字列('TRUE'または'FALSE')
auth_scheme nvarchar(40) この接続のSQL Server/Windows認証スキーム
node_affinity smallint 接続がアフィニティを持つメモリノードを識別
num_reads int この接続で発生した読み取りバイト数
num_writes int この接続で発生した書き込みバイト数
last_read datetime この接続で最後の読み取りが発生したときのタイムスタンプ
last_write datetime この接続で最後の書き込みが発生したときのタイムスタンプ
net_packet_size int 情報、データ転送に使用されるネットワークパケットサイズ
client_net_address varchar(48) クライアントコンピュータのホストアドレス
V12より前のAzure SQLデータベースでは常に「NULL」
client_tcp_port int クライアントコンピュータ上のポート番号
Azure SQLデータベースでは常に「NULL」
local_net_address varchar(48) この接続の対象となったサーバIPアドレス
TCPトランスポートを使用した接続の場合に表示される
Azure SQLデータベースでは常に「NULL」
local_tcp_port int この接続で使用されるサーバ側のTCPポート番号
TCPトランスポートを使用した接続の場合に表示される
Azure SQLデータベースでは常に「NULL」
connection_id uniqueidentifier 各接続を一意に識別する識別子
parent_connection_id uniqueidentifier 「MARS」セッションが使用しているプライマリ接続の識別子
most_recent_sql_handle varbinary(64) この接続で実行された最新の要求のSQLハンドル
常に「most_recent_session_id」列と同期される

出力例

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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