私のSQL Serverのエンジンは52358.、例えば、動的なTCPポートを使用している私は、私のJDBC DB URL接続文字列、つまり、ポート番号52358を指定した場合、私は何の問題もなくJDBCクエリを行うことができます
jdbc:sqlserver://serverName:52358;databaseName=myDB
これは動的ポートがあるので、このポート(52358)を使用すると、SQL Serverの次回の再起動後に使用できなくなった場合は、SQL Serverは別のポートを選択する可能性があります。
だから、接続文字列で私のDB URLを設定する最良の方法は何ですか?
私が試してみましたアプローチ:
すなわち、ポート番号を省略し、唯一のインスタンス名を使用して、
jdbc:sqlserver://serverName;databaseName=myDB
これは動作しません。ちなみに、SQL Server Browserサービスがすでに有効になっています。
ソリューションが見つかりました(ゴード・トンプソンのおかげで)。完全な形 DB URLのは、次のとおりです。
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
ここでのportNumberまたはinstanceNameのいずれかがserverNameのに接続するために使用されてもよいです。しかしながら、
ここで、portNumberおよびinstanceNameの両方が使用されている場合は、ここで、portNumberが優先され、instanceNameのは無視されます。
したがって、動的ポートの場合のために、我々は唯一の接続のためのinstanceNameを使用して実行しているSQL Browserサービスを維持する必要があります(SQL Serverが提供してSQL Server Browserサービスをポートを監視し、そのインスタンスの現在のポートへの直接の着信接続) 。このように、私の場合には、正しい形式は次のとおりです。
jdbc:sqlserver://serverName\instanceName;databaseName=myDB
また、我々は、ということを覚えておいてください
名前付きインスタンスに接続するときに最適な接続パフォーマンスのために、あなたはここで、portNumberを設定する必要があります。これは、ポート番号を決定するために、サーバーへのラウンドトリップを回避します
そして、これは、静的なポート番号を呼び出します。
あなたは本当に、ポート番号、残りの定数に数えることができないなら、あなたはSQL Serverインスタンス名を使用して接続する必要があります。
既定のインスタンス:
jdbc:sqlserver://servername\MSSQLSERVER;...
名前付きインスタンス
jdbc:sqlserver://servername\instancename;...
インスタンス名は、現在使用されている実際のポート番号に解決できるようにもちろん、この手段SQL Browserサービスは、サーバ上で稼働している必要がありますということ。