次の方法で共有


SqlCommand.CommandTimeout プロパティ

定義

コマンド実行の試行を終了してエラーを生成するまでの待機時間 (秒単位) を取得または設定します。 既定値は 30 秒です。

public:
 virtual property int CommandTimeout { int get(); void set(int value); };
public override int CommandTimeout { get; set; }
member this.CommandTimeout : int with get, set
Public Overrides Property CommandTimeout As Integer

プロパティ値

コマンドの実行を待機する時間 (秒単位)。 既定値は 30 秒です。

例外

0 より小さい値が設定されました。

注釈

値 0 は制限がないことを示します (コマンドを実行しようとすると無期限に待機します)。

注意

プロパティは CommandTimeout 、 などの BeginExecuteReader古いスタイルの非同期メソッド呼び出し中に無視されます。 これは、 などの ExecuteReaderAsync新しい非同期メソッドによって受け入れられます。

注意

このプロパティは、コマンドの実行中または結果の処理中のすべてのネットワーク読み取りに対する累積タイムアウト (メソッドの呼び出し中に読み取られるすべてのネットワーク パケットの場合) です。 最初の行が返された後もタイムアウトが発生する可能性があり、ユーザーの処理時間は含まず、ネットワーク読み取り時間のみが含まれます。

たとえば、タイムアウトが 30 秒の場合、2 つのネットワーク パケットが必要な場合 Read は、両方のネットワーク パケットを読み取るために 30 秒が必要です。 もう一度を呼び出 Read すと、必要なデータを読み取るためにさらに 30 秒が必要になります。

// <Snippet1>
using System;
using Microsoft.Data.SqlClient;

public class A
{
    public static void Main()
    {
        string connectionString = "<Your-connection-string-here>";
        // Wait for 5 second delay in the command
        string queryString = "waitfor delay '00:00:05'";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            SqlCommand command = new SqlCommand(queryString, connection);
            // Setting command timeout to 1 second
            command.CommandTimeout = 1;
            try
            {
                command.ExecuteNonQuery();
            }
            catch (SqlException e)
            {
                Console.WriteLine("Got expected SqlException due to command timeout ");
                Console.WriteLine(e);
            }
        }
    }
}
// </Snippet1>

適用対象