Estoy intentando cambiar el tiempo de espera para una consulta SqlCommand, en un método que prueba mi conexión para una cadena de conexión dada. El código es similar a esto:CommandTimeout no funciona
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("SELECT ...", connection);
cmd.CommandTimeout = 10;
connection.Open();
SqlDataReader reader = cmd.ExecuteReader();
...
connection.Close();
}
Me gustaría tener un corto tiempo de espera aquí, ya que sólo quiero probar si esta cadena de conexión está bien. Pero, sin importar el número que configuré en CommandTimeout (probé 0, 1, 2, 4, 10, 30, 60, 120), mi tiempo real obtenido para una cadena de conexión ficticia es siempre aproximadamente el mismo (tiempo de ejecución total de unos 15 segundos).
Por lo tanto, me parece que el valor que configuro en CommandTimeout se ignora por algún motivo.
¿Alguna idea de por qué?
Ni idea, pero el mana de MSDN en http://msdn.microsoft.com/en-us/library/system. data.sqlclient.sqlcommand.commandtimeout.aspx indica un par de razones por las que podría ser ignorado. Una es el uso asincrónico y el uso de BeginExecuteReader, que no es su problema. Sin embargo, el otro se refiere al tiempo de espera "..no efecto cuando el comando se ejecuta contra una conexión de contexto (una SqlConnection abierta con" context connection = true "en la cadena de conexión)." Tal vez revise su cadena de conexión para ver si esta es la causa. –
Sí, revisé la documentación un par de veces para asegurarme de que no me faltaba algo allí. De todos modos, no es un lector asíncrono ni la cadena de conexión tiene contexto. –
No relacionado con la pregunta, pero como está utilizando un bloque "usar", no necesita hacer conexión. Cerrar() cuando el final del alcance en el bloque de uso se cerraría automáticamente y eliminaría su conexión – dotnetguy