The default CommandTimeout value is 30 seconds. You can manually change the value on an instance of the command object by doing the following

Dim cmd As New System.Data.SqlClient.SqlCommand
cmd.CommandTimeout = 60

Is there a way to specify a different default value, such that all new command objects will automatically have this value within your solution when they are created?

有帮助吗?

解决方案

As far as I know no, there is no way to change this default. The constructor code for a SqlCommand is this:

public SqlCommand()
{
    this.ObjectID = Interlocked.Increment(ref _objectTypeCount);
    this._commandTimeout = 30;
    this._updatedRowSource = UpdateRowSource.Both;
    this._prepareHandle = -1;
    this._rowsAffected = -1;
    this._notificationAutoEnlist = true;
    GC.SuppressFinalize(this);
}

A possible workaround is to use a predefined SqlCommand passed as argument to the constructor that takes a SqlCommand as argument.

So you could create a global SqlCommand (a template)

 Dim commandTemplate60 = new SqlCommand()
 commandTemplate60.Timeout = 60

and then when you need a command with a timeout of 60 seconds

Dim cmd As New System.Data.SqlClient.SqlCommand(commandTemplate60)

However, setting directly the Timeout, doesn't seems to be a lot of work

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top