如何在脚本中设置SQL Server脚本的超时?

时间:2008-10-22 08:15:41

标签: sql-server timeout sql-scripts

我正在尝试运行一个大型脚本文件(将近300MB,并且将来可能更大)。在Gulzar对我的question about it的回答的评论中已经建议我应该将脚本超时更改为0(没有超时)。

在脚本中设置此超时的最佳方法是什么?目前,我将所有这些都放在脚本文件的顶部,希望其中一个人做点什么:

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

但是,我仍然得到相同的结果,我无法判断我是否成功设置超时,因为sqlcmd.exe的响应是世界上最不实用的错误消息:

  

Sqlcmd:错误:脚本错误。

感谢。

3 个答案:

答案 0 :(得分:7)

您的解决方案 - 每100或150行添加GO

http://www.red-gate.com/MessageBoard/viewtopic.php?t=8109

答案 1 :(得分:5)

sqlcmd -t {n}

其中{n}必须是0到65535之间的数字。

请注意,自the server has no concept of a timeout以来,您的问题有点误导,因此您无法在脚本中设置超时。

在您的上下文中,超时由 sqlcmd

强制执行

答案 2 :(得分:4)

我认为SQL Server上的SQL脚本没有超时概念。您必须在调用层/客户端中设置超时。

根据this MSDN article,您可以尝试以这种方式增加超时:

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

“使用远程查询超时选项指定远程操作在Microsoft SQL Server超时之前可以花多长时间(以秒为单位)。默认值为600,允许等待10分钟。此值适用于数据库引擎作为远程查询启动的传出连接。该值对数据库引擎收到的查询没有影响。“

P.S。:300 MB你的意思是生成的文件是300 MB?我不希望脚本文件本身是300 MB。这将是一项世界纪录。 ; - )