4

データベースに接続してデータを読み取るWindowsアプリケーションがあります。データベースはレジリエンス用に設定されているため、アプリケーションは 2 つのデータベースのいずれかに接続する必要があります。SQLサーバー認証を使用して、接続文字列でフェールオーバーパートナーを指定するための構文を誰かが指定できますか?

どんな助けでも大歓迎です。

4

3 に答える 3

11

connectionstrings.com を確認します。

データベース ミラーリング
ADO.NET または SQL Native Client を使用して、ミラーリングされているデータベースに接続すると、データベース ミラーリングのフェールオーバーが発生したときに、アプリケーションでドライバーの機能を利用して接続を自動的にリダイレクトできます。接続文字列で最初のプリンシパル サーバーとデータベース、およびフェールオーバー パートナー サーバーを指定する必要があります。

Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;Initial
Catalog=myDataBase;Integrated Security=True;

もちろん、データベース ミラーリングを使用して接続文字列を書き込む方法は他にもたくさんあります。これはフェールオーバー機能を示す 1 つの例にすぎません。これを、利用可能な他の接続文字列オプションと組み合わせることができます。

于 2009-03-24T14:42:20.120 に答える
1

接続文字列にフェールオーバー パートナー サーバーの名前を指定すると、クライアント アプリケーションが最初に接続したときにプリンシパル データベースが利用できない場合、クライアントは透過的にフェールオーバー パートナーとの接続を試みます。

";Failover Partner=PartnerServerName"

フェールオーバー パートナー サーバーの名前を省略し、クライアント アプリケーションが最初に接続したときにプリンシパル データベースを使用できない場合は、SqlException が発生します。

ソース

于 2009-03-24T18:47:53.057 に答える
0

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
于 2011-01-28T02:46:58.210 に答える