動的なTCPポートを使用してSQLサーバーへのJDBC接続

鵬:

私の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サービスは、サーバ上で稼働している必要がありますということ。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=209669&siteId=1