Estoy intentando anular el SqlConnection
tiempo de espera predeterminado de 15 segundos y aparece un error que dice que el
la propiedad o el indexador no se pueden 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();
}
}
c#
.net
sql-server
sqlconnection
Haymak3r
fuente
fuente
Respuestas:
Si desea proporcionar un tiempo de espera para una consulta en particular, 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.
fuente
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 sugiere Anil, ConnectionTimeout puede no ser lo que necesita; controla cuánto tiempo esperará el controlador ADO al establecer una nueva conexión. Su uso parece indicar la necesidad de esperar más de lo normal para que se ejecute una consulta SQL en particular, y en ese caso Anil tiene exactamente la razón; use CommandTimeout (que es R / W) para cambiar el tiempo de finalización esperado para un SqlCommand individual.
fuente
Una forma más limpia es establecer connectionString en un archivo xml, por ejemplo
Web.Confing(WepApplication)
oApp.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 la 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; }
Solo puede configurar
ConnectionTimeout
si crea una instancia. Cuando se crea la instancia, no cambia este valor.fuente
Siempre puede agregarlo a su Cadena de conexión:
connect timeout=180;
fuente
Puede agregar
Connection Timeout=180;
a su cadena de conexiónfuente
También puede utilizar SqlConnectionStringBuilder
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(ConnectionString); builder.ConnectTimeout = 10; using (var connection = new SqlConnection(builder.ToString())) { // code goes here }
fuente
Publicación anterior, pero a medida que surge lo que estaba buscando, pensé en agregar algo de información a este tema. Iba a agregar un comentario pero no tengo suficiente reputación.
Como han dicho otros:
connection.ConnectionTimeout se utiliza para la conexión inicial
command.CommandTimeout se utiliza 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 loca.
Por lo tanto, si se está agotando el tiempo de espera en la confirmación o la reversión, deberá aumentar este valor mediante la cadena de conexión.
fuente
Puede establecer el tiempo de espera de la conexión en el nivel de conexión y el nivel de comando.
var connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;Connection Timeout=10"; using (var con = new SqlConnection(connectionString)) { }
var connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword"; using (var con = new SqlConnection(connectionString)) { using (var cmd =new SqlCommand()) { cmd.CommandTimeout = 10; } }
fuente
Necesitas usar
command.CommandTimeout
fuente