「Microsoft 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.