共用方式為


SqlClient 中的可設定重試邏輯簡介

適用於:.NET Framework .NET .NET Standard

下載 ADO.NET

可設定重試邏輯可讓開發人員和管理員管理發生暫時性錯誤時的應用程式行為。 此功能會在命令連線或執行期間新增控制項。 控制項可以透過程式碼或應用程式設定進行定義。 您可以定義暫時性錯誤號碼和重試屬性來控制重試行為。 此外,規則運算式也可以用來篩選特定 SQL 陳述式。

功能元件

此功能包含三個主要元件:

  1. 核心 API:開發人員可以使用這些介面,以對 SqlConnectionSqlCommand 物件實作它們自己的重試邏輯。 如需詳細資訊,請參閱 SqlClient 中的可設定重試邏輯核心 API
  2. 預先定義的可設定重試邏輯:使用核心 API 的內建重試邏輯方法可以從 SqlConfigurableRetryFactory 類別進行存取。 如需詳細資訊,請參閱 SqlClient 中的內部重試邏輯提供者
  3. 設定檔結構描述:在應用程式中指定 SqlConnectionSqlCommand 的預設重試邏輯。 如需詳細資訊,請參閱使用 SqlClient 的可設定重試邏輯設定檔

快速入門

若要使用這項功能,請遵循下列四個步驟:

  1. 在預覽版本中啟用安全切換。 如需如何啟用 AppContext 安全參數的相關資訊,請參閱啟用可設定的重試邏輯

  2. 使用 SqlRetryLogicOption 定義重試邏輯選項。
    在此範例中,會設定一些重試參數,而其餘參數將會使用預設值。

    // Define the retry logic parameters
    var options = new SqlRetryLogicOption()
    {
        // Tries 5 times before throwing an exception
        NumberOfTries = 5,
        // Preferred gap time to delay before retry
        DeltaTime = TimeSpan.FromSeconds(1),
        // Maximum gap time for each delay time before retry
        MaxTimeInterval = TimeSpan.FromSeconds(20)
    };
    
  3. 使用 SqlRetryLogicOption 物件來建立重試邏輯提供者。

    // Create a retry logic provider
    SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);
    
  4. SqlRetryLogicBaseProvider 執行個體指派給 SqlConnection.RetryLogicProviderSqlCommand.RetryLogicProvider
    在此範例中,如果連線遇到 SqlConfigurableRetryFactory 內部清單中的其中一個暫時性錯誤,則連線開啟命令最多會重試五次。

    // Assumes that connection is a valid SqlConnection object 
    // Set the retry logic provider on the connection instance
    connection.RetryLogicProvider = provider;
    // Establishing the connection will retry if a transient failure occurs.
    connection.Open();
    

注意

這些步驟與命令執行相同,不同之處在於您會在執行命令之前,改為將重試提供者指派給 SqlCommand.RetryLogicProvider 屬性。

另請參閱