SQL Server 2000/2005で共有メモリ接続を使用する場合、ConnectionStringのServerオプションは、(local)でなくてはならない。
先ほどDotNetNuke 3.2.2 + SQL Server 2000 SP4 でなんとか共有メモリ接続ができないかと考えてました。
昨日書いたサーバーネットワークユーティリティで、すべての接続をオフ(=共有メモリ接続しか認めない)にしたのに、何故つながらないか、悩んでました。
で、今朝、MSDNを見てみたら書いてありました。(.NET Framework 2.0のライブラリでしたが)
ローカル コンピュータに接続するには、サーバーとして (local) を指定します。サーバーは常に指定する必要があります。
接続は、まず、共有メモリで接続してみて、接続できなければ、TCP/IP接続として接続を試みるらしい。
Network Library オプションでも共有メモリ接続を使うか、TCP/IP接続を使うか指定できるみたい。
オプション名:Network Library または Net
既定値:dbmssocn
SQL Server のインスタンスへの接続を確立するために使用するネットワーク ライブラリ。サポートされる値は、dbnmpntw (名前付きパイプ)、dbmsrpcn (マルチプロトコル)、dbmsadsn (AppleTalk)、dbmsgnet (VIA)、dbmslpcn (共有メモリ)、dbmsspxn (IPX/SPX)、および dbmssocn (TCP/IP) です。
接続先のシステムに、対応するネットワーク DLL がインストールされている必要があります。ネットワークを指定せずに、.、(local) など、ローカル サーバーを使用する場合は、共有メモリが使用されます。
ちなみに、今使ってるのはSQL Server 2000(インスタンス名:SQL2000) ですが、Server=.\SQL2000 で指定していたら共有メモリ接続ができず、Server=(local)\SQL2000 と書き換えたら共有メモリ接続ができたとか。
昨日から悩んでいた問題が早くも解決。