2008-08-26 19 views
24

Tengo una sentencia SQL de larga ejecución que quiero ejecutar, y no importa lo que puse en la cláusula "timeout =" de mi cadena de conexión, parece que siempre termina después de 30 segundos.El tiempo de espera no se respeta en la cadena de conexión

sólo estoy allí utilizando SqlHelper.ExecuteNonQuery() para ejecutarlo, y dejar que tome el cuidado de las conexiones de apertura, etc.

es otra cosa que podría ser de primer orden mi tiempo de espera, o haciendo que el servidor SQL para ignorarlo? He ejecutado un perfil sobre la consulta, y el rastreo no se ve diferente cuando lo ejecuto en el estudio de administración, en comparación con mi código.

El estudio de administración completa la consulta en aproximadamente un minuto, pero incluso con un tiempo de espera configurado en 300 o 30000, mi código aún expira después de 30 segundos.

Respuesta

38

¿Qué está utilizando para configurar el tiempo de espera en su cadena de conexión? Desde la memoria que es "ConnectionTimeout" y solo afecta el tiempo que lleva realmente , conecte al servidor.

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

+1

¡Tan obvio! Pero eso no me impidió perder dos horas sin la respuesta ... ¡Gracias! – Aaron

14

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 una muestra de C#, utilizando la clase SqlCommand. Su equivalente debe ser aplicable a lo que estás usando.

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection); 
command.CommandTimeout = 0; 
int rows = command.ExecuteNonQuery(); 
Cuestiones relacionadas