SqlCommand.CommandTimeout Property
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Gets or sets the wait time (in seconds) before terminating the attempt to execute a command and generating an error. The default is 30 seconds.
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
Property Value
The time in seconds to wait for the command to execute. The default is 30 seconds.
Exceptions
The value set is less than 0.
Remarks
A value of 0 indicates no limit (an attempt to execute a command will wait indefinitely).
Note
The CommandTimeout property will be ignored during old-style asynchronous method calls such as BeginExecuteReader. It will be honored by the newer async methods such as ExecuteReaderAsync.
Note
This property is the cumulative time-out (for all network packets that are read during the invocation of a method) for all network reads during command execution or processing of the results. A time-out can still occur after the first row is returned, and does not include user processing time, only network read time.
For example, with a 30 second time out, if Read requires two network packets, then it has 30 seconds to read both network packets. If you call Read again, it will have another 30 seconds to read any data that it requires.
// <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>