質問

私は、データベースミラーリングを設定し、それに接続するには、このconnectionstringを使用します:

    Data Source={0};Failover Partner={1};Initial Catalog=AdventureWorks;
    Integrated Security=True;

データベースにいくつかのデータを追加した後、Iシャットダウンプリンシパルサーバーは、そうミラーサーバーは、プリンシパルサーバーとなります。私はこのエラーを取得し、再び接続を開きます:

    System.Data.SqlClient.SqlException: A transport-level error has 
occurred when sending the request to the server. (provider: Shared Memory 
Provider, error: 0 - No process is on the other end of the pipe.)

私は、フェールオーバーパートナーは、接続文字列で指定して、ADO.NETは私のために仕事をするだろうと思いました。だから私は今、何をすべきでしょうか?

役に立ちましたか?

解決

幸いなことに、私はこの問題を修正しました。私がやらなければならないことは、ClearPoolメソッドを呼び出してます:

SqlConnection.ClearPool(conn);

このメソッドは、接続プールがクリアされます。その後、問題がなくなっています。私はそれでとてもうれしいです。

あなたのサポートのために、あなたのすべて、ありがとうございます。 :D

他のヒント

私は、.NETのものについての専門家ではないが、あなたは、SQLネイティブクライアント(SQLNCLI)がフェールオーバーを処理する必要があります。 "ado.net" SQLOLEDBかもしれ

のWindows Server 2003までは、少なくともそれは、デフォルトではインストールされていません。これは、スタンドアロンまたはSQLクライアントツールの一部のどちらかなので、私はあなたがSQLOLEDBを使用している疑いがある。

あなたが校長をシャットダウンした後、

、あなたは、フェールオーバーが実際に校長になったことを確認したのですか?これは、SQL Serverで自動フェイルオーバーを持っていなかった場合は、ミラーはミラーサイトです。

私たちは、あなたが十分な大きさのタイムアウトが設定されているdidntの場合は、これが起こることがわかっています。

<のhref = "https://serverfault.com/questions/249589/db-auto-failover-in-c-does-not-work-when-the-principal-server-physically-goes-o" > https://serverfault.com/questions/249589/db-auto-failover-in-c-does-not-work-when-the-principal-server-physically-goes-o の

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top