net example ejemplo c# .net sql-server sqlconnection

c# - example - Cambiar el tiempo de espera de SqlConnection



sqlconnection c# parameters (7)

Estoy intentando anular el tiempo de espera predeterminado de SqlConnection de 15 segundos y recibo un error que dice que el

propiedad o indizador no se puede asignar porque es de solo lectura.

¿Hay alguna forma de evitar esto?

using (SqlConnection connection = new SqlConnection(Database.EstimatorConnection)) { connection.Open(); using (SqlCommand command = connection.CreateCommand()) { command.CommandType = CommandType.StoredProcedure; connection.ConnectionTimeout = 180; // This is not working command.CommandText = "sproc_StoreData"; command.Parameters.AddWithValue("@TaskPlanID", order.Projects[0].TaskPlanID); command.Parameters.AddWithValue("@AsOfDate", order.IncurDate); command.ExecuteNonQuery(); } }


Necesita usar command.CommandTimeout


Publicación anterior pero a medida que aparece para lo que estaba buscando, pensé que agregaría algo de información a este tema. Iba a agregar un comentario pero no tengo suficiente representante.

Como otros han dicho:

connection.ConnectionTimeout se usa para la conexión inicial

command.CommandTimeout se usa para búsquedas individuales, actualizaciones, etc.

Pero:

connection.ConnectionTimeout también se usa para confirmar y revertir transacciones.

Sí, esta es una decisión de diseño absolutamente insana.

Por lo tanto, si está ejecutando un tiempo de espera en la confirmación o restitución, deberá aumentar este valor a través de la cadena de conexión.


Puede agregar Connection Timeout=180; a su cadena de conexión


Puede establecer el valor de tiempo de espera en la cadena de conexión, pero después de conectarse es de solo lectura. Puede leer más en http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx

Como implica Anil, ConnectionTimeout puede no ser lo que necesita; Controla cuánto esperará el controlador ADO al establecer una nueva conexión. Su uso parece indicar una necesidad de esperar más tiempo de lo normal para que se ejecute una consulta SQL en particular, y en ese caso Anil tiene toda la razón; use CommandTimeout (que es R / W) para cambiar el tiempo de finalización esperado para un SqlCommand individual.


Si desea proporcionar un tiempo de espera para una consulta en particular, entonces CommandTimeout es el camino a seguir.

Su uso es:

command.CommandTimeout = 60; //The time in seconds to wait for the command to execute. The default is 30 seconds.


Siempre puede agregarlo a su Cadena de conexión:

connect timeout=180;


Una forma más limpia es establecer connectionString en un archivo xml, por ejemplo Web.Confing(WepApplication) o App.Config(StandAloneApplication) .

<connectionStrings> <remove name="myConn"/> <add name="myConn" connectionString="User ID=sa;Password=XXXXX;Initial Catalog=qualitaBorri;Data Source=PC_NAME/SQLEXPRESS;Connection Timeout=60"/> </connectionStrings>

Por código, puede obtener conexión de esta manera:

public static SqlConnection getConnection() { string conn = string.Empty; conn = System.Configuration.ConfigurationManager.ConnectionStrings["myConn"].ConnectionString; SqlConnection aConnection = new SqlConnection(conn); return aConnection; }

Puede configurar ConnectionTimeout solo para crear una instancia. Cuando instancia es crear, no cambia este valor.