다음을 통해 공유


SqlClient의 구성 가능한 다시 시도 논리 소개

적용 대상: .NET Framework .NET .NET Standard

ADO.NET 다운로드

구성 가능한 다시 시도 논리를 통해 개발자와 관리자는 일시적인 오류가 발생할 때 애플리케이션 동작을 관리할 수 있습니다. 이 기능은 명령을 연결하거나 실행하는 동안 컨트롤을 추가합니다. 컨트롤은 코드 또는 애플리케이션 구성 파일을 통해 정의할 수 있습니다. 일시적인 오류 번호 및 다시 시도 속성을 정의하여 다시 시도 동작을 제어할 수 있습니다. 또한 정규식을 사용하여 특정 SQL 문을 필터링할 수 있습니다.

기능 구성 요소

이 기능은 다음과 같은 세 가지 주요 구성 요소로 구성됩니다.

  1. 코어 API: 개발자는 이러한 인터페이스를 사용하여 SqlConnectionSqlCommand 개체에서 자체 다시 시도 논리를 구현할 수 있습니다. 자세한 내용은 구성 가능한 다시 시도 논리 코어 API 사용을 참조하세요.
  2. 사전 정의된 구성 가능한 다시 시도 논리: 코어어 API를 사용하는 기본 제공 다시 시도 논리 메서드는 SqlConfigurableRetryFactory 클래스에서 액세스할 수 있습니다. 자세한 내용은 SqlClient의 내부 다시 시도 논리 공급자를 참조하세요.
  3. 구성 파일 스키마: 애플리케이션의 SqlConnectionSqlCommand에 대한 기본 다시 시도 논리를 지정합니다. 자세한 내용은 SqlClient를 사용하여 구성 가능한 다시 시도 논리 구성 파일을 참조하세요.

빠른 시작

이 기능을 사용하려면 다음 단계를 수행합니다.

  1. 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)
    };
    
  2. 사용자의 SqlRetryLogicOption 개체를 사용하여 다시 시도 논리 공급자를 만듭니다.

    // Create a retry logic provider
    SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);
    
  3. SqlRetryLogicBaseProvider 또는 SqlConnection.RetryLogicProviderSqlCommand.RetryLogicProvider 인스턴스를 할당합니다.
    이 샘플에서 연결 열기 명령이 SqlConfigurableRetryFactory 내부 목록의 일시적인 오류 중 하나에 도달하면 최대 5번까지 다시 시도합니다.

    // 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 속성에 다시 시도 공급자를 할당하는 것을 제외하고는 명령 실행에 대해 동일합니다.

참고 항목