名前付きパイプを使用した有効な接続文字列の作成

ユーザーが変更しない限り、Microsoft SQL Server の既定のインスタンスは、名前付きパイプ プロトコルで受信を待機する場合に \\.\pipe\sql\query をパイプ名として使用します。ここで、ピリオドはコンピュータがローカル コンピュータであることを示し、pipe は接続が名前付きパイプであることを示します。sql\query はパイプの名前を示します。既定のパイプに接続するには、別名でもパイプ名に \\<computer_name>\pipe\sql\query を指定する必要があります。SQL Server が別のパイプで受信を待機する構成になっている場合は、パイプ名としてそのパイプを使用する必要があります。たとえば、SQL Server がパイプとして \\.\pipe\unit\app を使用している場合、別名ではパイプ名として \\<computer_name>\pipe\unit\app を使用しなければなりません。

有効なパイプ名を作成するには、次の操作を行う必要があります。

  • [別名] を指定します。

  • [プロトコル][名前付きパイプ] を選択します。

  • [パイプ名] を入力します。また、[パイプ名] を空白のままにし、SQL Server 構成マネージャで [プロトコル][サーバー] を指定した後、適切なパイプ名を完成することもできます。

  • [サーバー] を指定します。名前付きのインスタンスの場合は、サーバー名とインスタンス名を指定できます。

SQL Server Native Client コンポーネントは接続の時点で、指定された別名のサーバー、プロトコル、パイプ名の値をレジストリから読み取り、np:\\<computer_name>\pipe\<pipename> または np:\\<IPAddress>\pipe\<pipename> の形式でパイプ名を作成します。名前付きインスタンスの場合、既定のパイプ名は \\<computer_name>\pipe\MSSQL$<instance_name>\sql\query です。

注意

Microsoft Windows XP Service Pack 2 では Windows ファイアウォールが有効になるので、ポート 445 が既定で閉じられます。Microsoft SQL Server はポート 445 経由で通信するため、名前付きパイプを使用する着信クライアントの受信を待機するように SQL Server を構成している場合は、このポートを再度開く必要があります。ファイアウォールの構成の詳細については、SQL Server オンライン ブックの「SQL Server アクセスに対してファイアウォールを構成する方法」、またはファイアウォールのマニュアルを参照してください。

ローカル サーバーへの接続

クライアントと同じコンピュータ上で実行している SQL Server に接続する場合は、サーバー名として (local)を使用することもできます。(local) の使用はあいまいさを残すのでお勧めできませんが、対象のコンピュータ上でクライアントを実行していることがわかっている場合には便利な機能です。たとえば、営業スタッフは、ノート型コンピュータ上で SQL Server を実行し、プロジェクト データもそのノート型コンピュータに保存しておきます。このように、ネットワークに接続しないモバイル ユーザー用のアプリケーションの場合、(local) に接続するクライアントは、常にそのノート型コンピュータで実行している SQL Server に接続することになります。(local) の代わりに、localhost またはピリオド (.) を使用することもできます。

接続プロトコルの確認

以下のクエリは、現在の接続に使用しているプロトコルを返します。

SELECT net_transport 
FROM sys.dm_exec_connections 
WHERE session_id = @@SPID;

SELECT net_transport 
FROM sys.dm_exec_connections 
WHERE session_id = @@SPID;

既定のパイプに対するサーバー名による接続 :

Alias Name         <serveralias>
Pipe Name          <blank>
Protocol           Named Pipes
Server             <servername>

Alias Name         <serveralias>
Pipe Name          <blank>
Protocol           Named Pipes
Server             <servername>

既定のパイプに対する IP アドレスによる接続 :

Alias Name         <serveralias>
Pipe Name          <leave blank>
Protocol           Named Pipes
Server             <IPAddress>

Alias Name         <serveralias>
Pipe Name          <leave blank>
Protocol           Named Pipes
Server             <IPAddress>

既定以外のパイプに対するサーバー名による接続 :

Alias Name         <serveralias>
Pipe Name          \\<servername>\pipe\unit\app
Protocol           Named Pipes
Server             <servername>

Alias Name         <serveralias>
Pipe Name          \\<servername>\pipe\unit\app
Protocol           Named Pipes
Server             <servername>

名前付きのインスタンスに対するサーバー名による接続 :

Alias Name         <serveralias>
Pipe Name          \\<servername>\pipe\MSSQL$<instancename>\SQL\query
Protocol           Named Pipes
Server             <servername>

Alias Name         <serveralias>
Pipe Name          \\<servername>\pipe\MSSQL$<instancename>\SQL\query
Protocol           Named Pipes
Server             <servername>

ローカル コンピュータに対する localhost による接続 :

Alias Name         <serveralias>
Pipe Name          <blank>
Protocol           Named Pipes
Server             localhost

Alias Name         <serveralias>
Pipe Name          <blank>
Protocol           Named Pipes
Server             localhost

ローカル コンピュータに対するピリオドによる接続 :

Alias Name         <serveralias>
Pipe Name          <left blank>
Protocol           Named Pipes
Server             .

Alias Name         <serveralias>
Pipe Name          <left blank>
Protocol           Named Pipes
Server             .
注意

sqlcmd パラメータにネットワーク プロトコルを指定する場合は、SQL Server オンライン ブックの「sqlcmd.exe を使用してデータベース エンジンを接続する方法」を参照してください。