SqlClient の構成可能な再試行ロジックの概要
適用対象: .NET Framework .NET .NET Standard
構成可能な再試行ロジックにより、開発者および管理者は、一時的な障害が発生したときにアプリケーションの動作を管理できます。 この機能は、接続時またはコマンドの実行時の制御を高めます。 制御は、コードまたはアプリケーション構成ファイルを使用して定義することができます。 一時的なエラーの番号と再試行プロパティを定義して、再試行の動作を制御できます。 また、正規表現を使用して、特定の SQL ステートメントをフィルター処理することもできます。
機能コンポーネント
この機能は、次の 3 つの主要コンポーネントで構成されます。
- コア API: 開発者は、これらのインターフェイスを使用して、SqlConnection および SqlCommand オブジェクトに独自の再試行ロジックを実装できます。 詳細については、「SqlClient の構成可能な再試行ロジックのコア API」を参照してください。
- 事前定義済みの構成可能な再試行ロジック: コア API を使用する組み込みの再試行ロジック メソッドは、SqlConfigurableRetryFactory クラスからアクセスできます。 詳細については、「SqlClient の内部再試行ロジック プロバイダー」を参照してください。
- 構成ファイル スキーマ: アプリケーション内の SqlConnection および SqlCommand の既定の再試行ロジックを指定します。 詳細については、「SqlClient での構成可能な再試行ロジック構成ファイル」を参照してください。
クイック スタート
この機能を使用するには、次の 4 つの手順に従います。
プレビュー バージョンで安全スイッチを有効にします。 AppContext 安全スイッチを有効にする方法については、「構成可能な再試行ロジックを有効にする」を参照してください。
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) };
SqlRetryLogicOption オブジェクトを使用して、再試行ロジック プロバイダーを作成します。
// Create a retry logic provider SqlRetryLogicBaseProvider provider = SqlConfigurableRetryFactory.CreateExponentialRetryProvider(options);
SqlRetryLogicBaseProvider インスタンスを SqlConnection.RetryLogicProvider または SqlCommand.RetryLogicProvider に割り当てます。
次のサンプルでは、SqlConfigurableRetryFactory 内部リストの一時的なエラーの 1 つに最大 5 回ヒットした場合、connection open コマンドが再試行されます。// 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();
Note
これらの手順は、コマンドを実行する前に SqlCommand.RetryLogicProvider プロパティに再試行プロバイダーを割り当てることを除いて、コマンドを実行する場合と同じです。