0

.Net4.0とSqlConnection/SqlCommandを使用して、ミラーリングが設定されている2008R2SQLサーバーに接続しています。ConnectionStringは、フェイルオーバーパートナーを指定します

ConnectionTimeout設定が、クライアントがミラーにフェイルオーバーする機能にどのように影響するかを誰かが説明できますか?つまり、フェイルオーバーサーバーに移動する前に常にConnectionTimeoutを待機しますか?または、フェイルオーバーがプライマリになるということは、クライアントがConnectionTimeoutを無視して、フェイルオーバーへの接続にすぐに切り替えることを意味しますか?

私はMSDNの記事SQLServerでのデータベースミラーリングとデータベースミラーリングセッションへの初期接続を読み、メインサーバーダウンしたときにクライアントがミラーに自動的に接続することについて話しましたが、高いConnectionTimeoutを指定すると時間に影響しますクライアントをフェイルオーバーサーバーに接続しますか?

ADO.NETの既知のバグのため、すべての接続文字列のConnectionTimeoutを少なくとも150に設定する必要があります。また、大きなタイムアウトが、フェイルオーバーをタイムリーに処理するアプリの機能に影響を与えることを懸念しています。

4

2 に答える 2

2

タイムアウトはtcpタイムアウトを処理するのに十分な大きさである必要があることに注意してください。つまり、SQL接続が十分に長く待機しない場合、サーバーが決定する前にtcp接続がタイムアウト、再試行、タイムアウト、再試行するのを待機しません。死んでいる。少なくとも60秒に設定する必要があります。

これについては、https://serverfault.com/questions/249589/db-auto-failover-in-c-does-not-work-when-the-principal-server-physically-goes-oで詳しく説明しました。

于 2012-04-12T15:53:40.037 に答える
1

プライマリデータベースサーバーが利用できない場合、ADO.Netはすぐにフェールオーバーパートナーへの接続を試みます。プライマリサーバーが使用可能であるが、要求されたデータベースがミラーリングされた状態にある場合、ADO.Net呼び出し元はプリンシパルサーバーにリダイレクトされます(接続文字列フェールオーバーパートナーと一致する場合と一致しない場合があります)。プライマリデータベースとサーバーの可用性を意味するその他の状況は、タイムアウトまたはエラーを待機します。

于 2011-07-28T22:09:20.353 に答える