2017-04-03 6 views
0

私は、entityframeworkコアを使用して、sql azureと通信しているサービスファブリックサービス(ゲスト実行可能ファイル)を持っています。私は次のエラーが表示さ随時エラー40とSqlAzureExecutionStrategy

:エラーなしで発生し、多くのデータベース・トランザクションがあるよう

A network-related or instance-specific error occurred while establishing a connection 
to SQL Server. The server was not found or was not accessible. Verify that the 
instance name is correct and that SQL Server is configured to allow remote connections. 
(provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) 

それ過渡です。これは、ノードがビジー状態になると、より多く発生するようです。私はSqlServerRetryingExecutionStrategyを設定するEnableRetryOnFailureを設定し、スタートにコードを追加しました

services.AddEntityFrameworkSqlServer() 
     .AddDbContext<MyDbContext>(options => 
      options.UseSqlServer(_configuration.GetConnectionString("MyDbConnection"), 
      o => o.EnableRetryOnFailure())) 

一つの大きな注意点は、私がしようとしていたどのデータを知らないので、私はコンテキストを失っていた瞬間であります更新/挿入されるので、最終的に成功したかどうかはわかりません。

質問のカップル:

  1. Transient Detection Codeから、それは誤りのように見えない:40はキャッチが、私の理解では、エラー40が実際に別のエラー(不明瞭)とすることができるということです。あれは正しいですか?
  2. これは実際に一時的な問題ですか、別の問題があるのですか?
  3. 再試行戦略がエラーをログに記録しても、再試行しても実際に成功したかどうかはわかりますか?
  4. これは一時的なエラーですが、デフォルトの実行戦略には捕捉されていません。このエラーを含めるためにSqlAzureExecutionStrategyをサブクラス化すると、意図しない結果が発生します。 - 私はやって見ていきますこれ、私が私のコードをより弾力的にするためにしようとしているSql Connection Error 40 Under Load、それは身近な感じが、彼は彼のデータベースをチューニングすることによってそれを解決しているようだ:私はこの質問を見てきました

データベースの問題の場合

答えて

0

2つのデータベーストランザクション間の時間間隔が非常に小さい場合は、クエリまたは要求をキャッシュする特定のバージョンのEFコアがあるため、最新のものを使用していることを確認するためにパッケージを更新してください。 Query: Threading issues cause NullReferenceException in SimpleNullableDependentKeyValueFactory #5456

は、これらの他のリンク

  1. https://github.com/aspnet/EntityFramework/issues/5456
  2. https://github.com/aspnet/Security/issues/739
  3. https://github.com/aspnet/EntityFramework/issues/6347
  4. https://github.com/aspnet/EntityFramework/issues/4120
をチェック
関連する問題