2016-11-25 39 views
2

我们有一个SQL Server 2014 AlwaysOn可用性组,我们通过标准C#SqlConnection对象连接到该对象。我们希望捕获手动或自动触发故障转移时发生的异常,并在等待一段时间后重试命令。应该允许哪些SQL错误代码重试?

我们不只是想重试每一个失败的命令,只是因故障转移而失败的事务。

Microsoft是否会生成一个我们可以检查的错误代码列表(或者是否存在某个列表)?

回答

0

微软已建立传输错误检测策略一次用于Azure的瞬态故障处理应用程序块。

瞬态故障处理应用程序块(Topaz)通过提供处理瞬态故障的逻辑,使应用程序更加健壮。它通过两种方式来做到这一点。首先,该块包括用于以检测策略的形式识别多个常见的基于云的服务的瞬时故障的逻辑。这些检测策略包含内置的知识,能够识别特定的异常是否可能是由瞬态故障引起的。

他们已经识别出指示暂时性故障的sql错误代码。虽然它针对云(针对Azure Sql Server),但我们已成功将其用于我们自己的内部部署环境。

你可以看看他们的代码和提取SQL代码,你可以检查:

http://topaz.codeplex.com/SourceControl/latest#source/Source/TransientFaultHandling.Data/SqlDatabaseTransientErrorDetectionStrategy.cs