サーバー上の名前付き SQL インスタンスに接続しようとしています。SQL Server 2005 の既定のインスタンスが既に存在し、新しく名前が付けられたインスタンス (SQL Server 2008) もあります。TCP 接続を使用するために「ネットワーク ライブラリ」プロパティを使用していますが、何らかの理由で既定のインスタンスに接続しようとし、ログイン エラーに関するエラーを省略します。
ネットワーク ライブラリ プロパティを削除すると、エラーなしで接続も確立されます。
私は Windows 認証を使用しており、必要な権限をすべて持っています。
問題のある接続文字列:
データ ソース = ServerName\InstanceName,1433;ネットワーク ライブラリ = dbmssocn;初期カタログ = MyDataBaseName;統合セキュリティ = SSPI
動作する接続文字列:
データ ソース = ServerName\InstanceName; 初期カタログ = MyDataBaseName; 統合セキュリティ = SSPI
その理由を知りたいです。よろしくお願いします。
タミール
答え1
接続文字列には 2 つの違いがあるので、これについてお答えします...
- 名前付きインスタンスはポート 1433 をリッスンしません (デフォルトでは、デフォルト インスタンスのみ)
- ポートが指定されている場合、インスタンス名は無視されます
それで:
ServerName\InstanceName,1433
ポート1433のサーバー「ServerName」に接続することを意味しますServerName\InstanceName
サーバー「ServerName」に接続し、インスタンス名を正しいポートに解決することを意味します(解決にはポート 1434 UDP が使用されます)。
ただし、network library=dbmssocn
TCP を使用することを意味します。SQL Server インスタンス (ポートに関するものを参照) が TCP をリッスンしていない可能性があります。