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 秒,则 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>

适用于