2016-11-25 38 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