アプリケーションが「どのプロトコルで接続しているのか」を確認するSQL Serverトラブルシューティング(8)

本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は「ネットワーク通信とプロトコルの選択」を解説します。

» 2016年07月25日 05時00分 公開
[内ヶ島暢之ユニアデックス株式会社]

連載バックナンバー

 本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。今回は、「ネットワーク通信とプロトコルの選択」を解説します。

【4】アプリケーションが、どのプロトコルで接続しているのかを確認する

 SQL Serverは起動処理開始後にデータベースの復旧、そして、ネットワーク通信の準備を行います。ネットワーク通信には主に以下の3つのプロトコルが使われます。

種類 特徴
TCP/IP ソケット通信を用いる方式。クライアントはIPアドレスとポート番号を指定して接続を行う。サーバ側は特定のポート番号でリスニングを行い、クライアントからの処理を待ち受けている
名前付きパイプ サーバ名と、サーバ内で定義したパイプ名を元にアプリケーションが接続する方式。「\\サーバ名\パイプ名」の表記となる
共有メモリ サーバ内のローカル接続に利用される通信方式

 異なるサーバ間で通信を行うときは、TCP/IPか名前付きパイプを使います。通信にはSQL Server同士で正しい設定になっている必要もあります。各プロトコルの設定は「SQL Server 構成マネージャー」で行います(図1、図2)。

photo 図1 「SQL Server 構成マネージャー」で確認する、サーバ側のプロトコル設定項目
photo 図2 クライアントになった時の設定項目

 図2のように、サーバ自身がクライアントになることがあるため、サーバの設定画面にもクライアント設定項目があります。クライアント側の設定では優先順位があり、図2の例では、最初に共有メモリで接続しようとし、失敗した場合はTCP/IPで接続を試みます。そして、TCP/IPで接続ができなければ、名前付きパイプで接続を試行します。セキュリティ上の理由で、名前付きパイプはサーバ側/クライアント側ともに無効にするといった設定も可能です。

 現在接続しているアプリケーションがどのプロトコルで接続しているのか確認する方法もあります。「sys.dm_exec_connection」と呼ばれる動的管理ビューで、SELECTステートメントを実行することで確認ができます(図3)。

photo 図3 アプリケーションの接続プロトコルを確認。session_id列に記述されているセッション番号別に、どのプロトコルで接続しているのかを確認できる


 以上、4回にわたって「SQL Serverの起動に関する技術」を説明しました。次回から、「起動に関する、実際のトラブルシューティングノウハウ」を解説します。


本トラブルシューティングの対応バージョン:SQL Server 全バージョン

筆者紹介

内ヶ島 暢之(うちがしま のぶゆき)

ユニアデックス株式会社所属。Microsoft MVP Data Platform(2011〜 )。OracleやSQL Serverなど商用データベースの重大障害や大型案件の設計構築、プリセールス、社内外の教育、新技術評価を行っていた。2016年4月よりIoTビジネス開発の担当となり、新しい仕事に奮闘中。ストレッチをして柔らかい身体を手に入れるのが当面の目標。

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

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


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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