SQL Azure重试逻辑框架TransientFaultHandling是否附带默认重试策略?

时间:2011-11-14 16:25:54

标签: azure azure-sql-database

在迁移到Azure的过程中,我实施了Windows Azure AppFabric客户咨询团队“TransientFaultHandling框架”。 http://appfabriccat.com/2011/02/transient-fault-handling-framework/

以下是我对我的代码所做的一切(很容易看起来好得令人难以置信):

1 /在我的项目中引用Microsoft.AzureCAT.Samples.TransientFaultHandling.dll(使用自动导入的命名空间)

2 /在公共DLL库上设置一个返回公共策略的公共函数:

Public Shared Function retryPolicy() As RetryPolicy

    Dim oPolicy As RetryPolicy = New RetryPolicy(Of SqlAzureTransientErrorDetectionStrategy)(10, TimeSpan.FromMilliseconds(100))
    Return oPolicy

End Function

3 /用oConn.Open()替换所有oConn.OpenWithRetry(retryPolicy()) 并将所有其他ReaderScalarNonQuery替换为:

  • oCmd.ExecuteReaderWithRetry(retryPolicy())
  • oCmd.ExecuteNonQueryWithRetry(retryPolicy())
  • oCmd.ExecuteScalarWithRetry(retryPolicy())

4 /就是这样

它有效,我的意思是没有错误,但是当我正在测试我的本地SQL Server时,我不知道重试逻辑是否正确实现,因为我不知道测试连接失败的方法

我读了一些TransientFaultHandling框架的实现示例,其中一些包含了一个用于检测SQL Server错误代码的自定义创建类。 我没有创建这样的类来保持简单,因为我假设框架附带了一个关于基于SQL Azure异常代码重试的良好默认行为。

问题: - 如果经典SQL Azure连接失败,我的代码是否正常?或者我是否必须设置自定义类以自行检测代码异常?

1 个答案:

答案 0 :(得分:3)

瞬态故障处理框架附带了一些重试策略,包括您提到的SQL Azure。您不应该对其进行任何更改以执行您希望它执行的操作。您看到的示例可供参考,因此您可以扩展框架,如果您想将其应用于尚未满足的内容。