MicrosoftのSQL serverは、SQL Server 2000 以降、既定のプロトコルは TCP/IP となっていると言う情報があるので、TCP/IPで通信しているものだと思い込んでいましたが、実際には、共有メモリ、名前付きパイプ、TCPの3パターンがあるようです。
ローカルで自分自身に接続するだけなら、共有メモリで接続するようです。
スポンサーリンク
実際にそうなっているか調べてみました。
from sys.dm_exec_connections
というSQLを実行します。
まずは、自分自身にインストールされたSQL serverに接続してチェックしてみました。
Shared memory となっているので、共有メモリということですね。
次は、Azure Databeseに接続してみました。
セッションがたくさんあって、Named pipeとTCPとなっているので、名前付きパイプとTCP/IPを使って接続しているようです。
Shared memory となっているので、共有メモリということですね。
次のように接続文字列を変更することで、
名前付きパイプでの接続 :np:接続先SQLServerホスト名
共有メモリでの接続 :lpc:接続先SQLServerホスト名
接続方法を指定できます。
自分自身にインストールされたSQL serverに接続して試してみたところ、共有メモリとTCP/IPでの接続はできました。
名前付きパイプができなかったのですが、構成マネージャーを見てみたら、ただ単に無効にしてあっただけでした。
設定変更したらできました。
Azureの方は、TCP/IPはOKでした。
共有メモリはダメです。
当たり前ですね。
なぜか名前付きパイプもダメでした。
名前付きパイプも使用して接続しているはずなのに、指定するとダメ。
調べてもわかりませんでした。