2008-10-22 32 views
9

Tengo un archivo de script grande (casi 300 MB, y probablemente más grande en el futuro) que estoy tratando de ejecutar. Se ha sugerido en los comentarios de la respuesta de Gulzar a mi question about it que debería cambiar el tiempo de espera del script a 0 (sin tiempo de espera).¿Cómo configuro el tiempo de espera de un script de SQL Server dentro del script?

¿Cuál es la mejor manera de establecer este tiempo de espera desde el script? Por el momento tengo todo esto en la parte superior del archivo de comandos con la esperanza de que uno de ellos hace algo:

sp_configure 'remote login timeout', 600 
go 
sp_configure 'remote query timeout', 0 
go 
sp_configure 'query wait', 0 
go 
reconfigure with override 
go 

Sin embargo, todavía estoy consiguiendo el mismo resultado y no puedo decir si 'm éxito en establecer el tiempo de espera debido a que la respuesta de sqlcmd.exe mensaje de error es menos útil en el mundo:

Sqlcmd: Error: Scripting error.

Gracias.

Respuesta

5
sqlcmd -t {n} 

Donde {n} debe ser un número entre 0 y 65535.

Tenga en cuenta que su pregunta es un poco engañoso ya que the server has no concept of a timeout y por lo tanto no se puede establecer el tiempo de espera dentro de su guión.

En su contexto, el tiempo de espera es impuesta por sqlcmd

+0

@edg: nunca escuché la opción -t de sqlcmd y no la encontré en la documentación. Pero lo revisé sqlcmd -? - ¡y ahí está! ¡Bravo! – splattne

+0

Supongo que esto no funcionará. sqlcmd.exe sin establecer -t explícitamente significa "sin tiempo de espera" – Tomalak

+1

Sí. Técnicamente la respuesta correcta a mi pregunta, pero no ayudó al problema central. ¡Gracias de cualquier manera! – tags2k

4

Creo que hay sin concepto de tiempo de espera dentro de un script SQL en SQL Server. Debe establecer el tiempo de espera en la capa/cliente de llamada.

Según this MSDN article usted podría tratar de aumentar el tiempo de espera de esta manera:

exec sp_configure 'remote query timeout', 0 
go 
reconfigure with override 
go 

"Use la opción de consulta de tiempo de espera remoto para especificar el tiempo, en segundos, el control remoto puede tomar antes de que Microsoft tiempos de SQL Server El valor predeterminado es 600, que permite una espera de 10 minutos. Este valor se aplica a una conexión saliente iniciada por el Motor de base de datos como una consulta remota. Este valor no tiene efecto en las consultas recibidas por el Motor de base de datos.

P.S .: Por 300 MB ¿quiere decir que el archivo resultante es de 300 MB? No espero que el archivo de script en sí sea de 300 MB. Eso sería un récord mundial. ;-)

+1

Sí, la secuencia de comandos SQL en sí es ~ 300 MB. ¡Dudo que sea un récord mundial ya que son solo 1,4 millones de filas de una mesa muy simple! – tags2k

+0

@ tags2k oh, se usa para insertar datos dentro de sentencias "INSERT" ... Estoy seguro de que hay una razón para hacerlo de esa manera, pero ¿no podría obtener los datos en un archivo de texto e importarlos a través de un paquete DTS? o algo similar? – splattne

+0

Cada línea debe verificarse a través de mi API, y aunque estoy seguro de que podría replicar todas las comprobaciones a través de un paquete DTS, por el tiempo y el estrés requeridos, también podría dividir el script SQL que ya tengo. – tags2k

Cuestiones relacionadas