我正在尝试运行一个大型脚本文件(将近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:错误:脚本错误。
感谢。
答案 0 :(得分:7)
您的解决方案 - 每100或150行添加GO
答案 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。这将是一项世界纪录。 ; - )