X.x.x.xとy.y.y.yというIPを持つ2つのSQLサーバーインスタンスをセットアップしました。 SQL Serverへの接続を指定するアプリケーションレベルで、接続文字列を次のように指定できますか?
<connection-url>jdbc:sqlserver://x.x.x.x:port; databaseName=productionDB; failoverPartner=jdbc:sqlserver://y.y.y.y:port</connection-url>
私はそれを試してみましたが、SQL Server 1データベースを手動で無効にすると、アプリケーションレベルでは、実際に2番目のサーバーに接続しようとしているように見えますが、代わりに次のように失敗します。
ホストy.y.y.yへの接続、ポート1433が失敗しました。エラー: "null。接続プロパティを確認します。SQLサーバーのインスタンスがホストで実行されており、ポートでTCP/IP接続を受け入れていることを確認します。ポートへのTCP接続]を確認します。ファイアウォールによってブロックされていません。
2つのIPを交換して上記のアプリケーションを再起動してもすべてが機能するため、ユーザー、パスワードなどの接続プロパティは2つのSQLインスタンス間ですべて同じであることがわかっています。また、フェールオーバーパートナーは、データベースミラーリングが設定されている場合にのみ使用する必要があることも知っています。ただし、これによると article 、基盤となるミラーリングデータベースを設定しなくても実行可能と思われます。
ミラーリングはSQL2016で非推奨になりました
SQL可用性グループを使用する必要があります。
セットアップは非常に簡単で、うまく機能します。
より優れた競争力のあるウォークスルーの1つであるため、いくつかの変更が必要ですが、それはかなり良いことです。
http://blog.fedenko.info/2016/06/sql-server-2016-always-on-availability.html
接続文字列はあまり変更されません。接続IPを変更し、背面にセキュリティパラメータを追加するだけです。
AlwaysOnBasicを使用したSQL2016標準-SQLまたはDCのいずれかが要求に応答するのに時間がかかりすぎるため、フェイルオーバーパートナーを使用する必要がありました。アプリケーションの接続文字列には、「Data Connection = SERVERNAME\NAMEDINSTANCE; Failover Partner = SERVERNAME2\NAMEDINSTANCE;」があります。基本的に2つのノードしかないため、これは正しく機能しているようです。