Set custom default CommandTimeout for all new Command Objects
Asked Answered
R

1

14

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?

Rewrite answered 6/8, 2013 at 20:26 Comment(1)
Related question (Not flagging as dup, there is some significant differences in those questions imo, even if answers to both are same.)Pancreas
Z
10

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

Zone answered 6/8, 2013 at 20:36 Comment(1)
Not constant value for default value ._commandTimeout = 30; ?Solis

© 2022 - 2024 — McMap. All rights reserved.