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.