我在 SQL Server 2005 中有一个作业设置,其中有一个操作系统 (CmdExec) 步骤。
该步骤调用的程序可能需要很长时间才能运行。我发现,如果程序响应时间超过 1 分 40 秒,则该步骤将失败,并显示错误消息“操作已超时”。程序实际上继续运行并生成所需的结果。
如何设置此作业中步骤的超时期限。或者,如果有一种方法可以为整个作业设置超时,那也同样有用,因为这是作业中的唯一步骤。如果一切都失败了,我愿意更改整个服务器的超时,尽管显然这将是最后的手段。
我已尝试查看步骤、作业和 SQL Server 代理的属性,但未能找到设置此选项的任何位置。
最佳答案
SQL 作业没有超时 - 您无法将它们配置为在运行时间过长或到达特定时间点时自行停止。 (如果可以的话,将为我节省大量开发时间!)您可以配置步骤来检查时间或持续时间,并且可以对步骤内采取的操作进行编码以检查时间,但在作业或步骤级别,不行。
这就是为什么这个问题很有趣。为什么你会超时?根据您所说的,我猜测 SQL 代理无法判断操作系统已收到您通过 cmdexec 步骤发送的“执行此操作”命令。发送并等待后,它认为作业从未开始并相应地报告(并且存在隐藏的系统超时)。这是怎么发生的?您可以投资安全配置或文件访问权限,但我首先要检查您正在启动的任何例程 - 我觉得其中有些东西很可疑。
关于sql-server - 如何设置 SQL Server 2005 作业 CmdExec 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1200527/