0

冗長なSQL構成(SQL Azureなど)に対してコマンドを実行すると、タイムアウトやその他の問題が発生することがあります。サーバーのシャットダウンまたは障害が原因のエラー。Azureでは、冗長性が組み込まれているため、これは問題になりません。正しいアクションは、新しい接続でクエリを再試行することです。おそらく、ロードバランサー(またはその他)が、正常に機能しているサーバーにキックオーバーします。

私の質問は、Entity Framework(v4またはv5)にこれを自動的に実行させる方法があるかどうかです。すべてのクエリをtry/catchブロック(特定のエラーが受信された場合にクエリを再試行する)でラップすることは非現実的であり、私が見落としているこの問題の解決策があると確信しています。

SQL Azureの接続のランダムなクローズに関する関連情報については、http://msdn.microsoft.com/en-us/library/ee336245.aspx#ccを参照してください。ただし、最近のところ、Azureからこのエラーはまったく発生していません...たまに散発的なSQLタイムアウトが発生しました。

4

2 に答える 2

1

SQLCATの一時的な障害処理フレームワークを見てください。

http://windowsazurecat.com/2010/12/sql-azure-and-entity-framework-connection-fault-handling/

===@pbarranisによって追加===

その同じサイトによると、しかし別のページ:

一時的な障害処理フレームワークは、Patterns&Practicesチームからの新しい成果物に取って代わられました。これは現在、一時的な障害処理アプリケーションブロックと呼ばれ、次の3つのフレーバーすべてがあります。

•開発者向けガイダンス: http: //msdn.microsoft.com/en-us/library/hh680934 (v = PandP.50).aspx

•nuGetパッケージ: http: //nuget.org/List/Packages/EnterpriseLibrary.WindowsAzure.TransientFaultHandling

•ソースコード: http: //nuget.org/List/Packages/EnterpriseLibrary.Source.WindowsAzure

新しい一時的な障害処理アプリケーションブロックは、WindowsAzureプラットフォームで実行されているアプリケーションの一時的な障害を処理するための公式に推奨されるアプローチになりました。

于 2012-09-10T01:29:17.307 に答える
0

Entity Framework 6(現在はアルファ版)を使用している場合は、Azure SQL Databaseを使用した一時的な再試行の新しい組み込みサポートがあります(少し構成が必要です):http ://entityframework.codeplex.com/wikipage?title = Connection%20Resiliency%20Spec

すべてのデータベース呼び出しを変更することなく、FaultHandlingブロックを使用して再試行するようにEntityFrameworkを構成できるライブラリを作成しました。通常は、構成ファイルと場合によっては1行または2行のコードを変更するだけで済みます。

これにより、EntityFrameworkまたはLinqToSqlに使用できます。

https://github.com/robdmoore/ReliableDbProvider

于 2013-06-17T16:46:35.633 に答える