データベースに接続してデータを読み取るWindowsアプリケーションがあります。データベースはレジリエンス用に設定されているため、アプリケーションは 2 つのデータベースのいずれかに接続する必要があります。SQLサーバー認証を使用して、接続文字列でフェールオーバーパートナーを指定するための構文を誰かが指定できますか?
どんな助けでも大歓迎です。
データベースに接続してデータを読み取るWindowsアプリケーションがあります。データベースはレジリエンス用に設定されているため、アプリケーションは 2 つのデータベースのいずれかに接続する必要があります。SQLサーバー認証を使用して、接続文字列でフェールオーバーパートナーを指定するための構文を誰かが指定できますか?
どんな助けでも大歓迎です。
connectionstrings.com を確認します。
データベース ミラーリング
ADO.NET または SQL Native Client を使用して、ミラーリングされているデータベースに接続すると、データベース ミラーリングのフェールオーバーが発生したときに、アプリケーションでドライバーの機能を利用して接続を自動的にリダイレクトできます。接続文字列で最初のプリンシパル サーバーとデータベース、およびフェールオーバー パートナー サーバーを指定する必要があります。
Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;Initial
Catalog=myDataBase;Integrated Security=True;
もちろん、データベース ミラーリングを使用して接続文字列を書き込む方法は他にもたくさんあります。これはフェールオーバー機能を示す 1 つの例にすぎません。これを、利用可能な他の接続文字列オプションと組み合わせることができます。
接続文字列にフェールオーバー パートナー サーバーの名前を指定すると、クライアント アプリケーションが最初に接続したときにプリンシパル データベースが利用できない場合、クライアントは透過的にフェールオーバー パートナーとの接続を試みます。
";Failover Partner=PartnerServerName"
フェールオーバー パートナー サーバーの名前を省略し、クライアント アプリケーションが最初に接続したときにプリンシパル データベースを使用できない場合は、SqlException が発生します。
SQL サーバー間でミラーリングをセットアップしていない場合は、.net を使用してこれを実現できます。単純に catch ステートメントで。
以下のコード..
enter code here
Imports System.Data.SqlClient
Imports System.Data
Public Class dbConn
Private primaryServerLocation As String = "SERVER=primaryAddress;DATABASE=yourDB;User id=youruserID;Password=yourPassword;"
Private secondaryServerLocation As String = "SERVER=secondaryAddress;DATABASE=yourDB;User id=youruserID;Password=yourPassword;"
Public sqlConnection As SqlConnection
Public cmd As SqlCommand
Public Sub primaryConnection()
Try
sqlConnection = New System.Data.SqlClient.SqlConnection(primaryServerLocation)
cmd = New System.Data.SqlClient.SqlCommand()
'test connection
sqlConnection.Open()
sqlConnection.Close()
Catch ex As Exception
secondaryConnection()
End Try
End Sub
Public Sub secondaryConnection()
'Used as the failover secondary server if primary is down.
Try
sqlConnection = New System.Data.SqlClient.SqlConnection(secondaryServerLocation)
cmd = New System.Data.SqlClient.SqlCommand()
'test connection
sqlConnection.Open()
sqlConnection.Close()
Catch ex As Exception
End Try
End Sub
End Class