フェイルオーバー後のミラーSQL Serverに接続するには?
-
18-09-2019 - |
質問
私は、データベースミラーリングを設定し、それに接続するには、この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 の