Pregunta

Tengo una declaración SQL de larga ejecución que quiero ejecutar y no importa lo que ponga en la cláusula "timeout=" de mi cadena de conexión, siempre parece terminar después de 30 segundos.

solo estoy usando SqlHelper.ExecuteNonQuery() para ejecutarlo, y dejar que él se encargue de abrir conexiones, etc.

¿Hay algo más que podría anular mi tiempo de espera o hacer que el servidor SQL lo ignore?Ejecuté el generador de perfiles sobre la consulta y el seguimiento no se ve diferente cuando lo ejecuto en Management Studio que en mi código.

Management Studio completa la consulta en aproximadamente un minuto, pero incluso con un tiempo de espera establecido en 300 o 30000, mi código aún se agota después de 30 segundos.

¿Fue útil?

Solución

¿Qué estás usando para establecer el tiempo de espera en tu cadena de conexión?De la memoria eso es "ConnectionTimeout" y sólo afecta el tiempo que lleva realmente conectar al servidor.

Cada comando individual tiene un "CommandTimeout" separado que sería lo que estás buscando.Sin embargo, no estoy seguro de cómo SqlHelper implementa eso.

Otros consejos

Además del tiempo de espera en la cadena de conexión, Intente utilizar la propiedad de tiempo de espera del comando SQL.A continuación se muestra un ejemplo de C#, utilizando la clase SqlCommand.Su equivalente debería ser aplicable a lo que estás usando.

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top