2009-07-29 79 views
2

我有一个作业设置SQL Server 2005中有一个操作系统(CmdExec)步骤。如何设置SQL Server 2005作业CmdExec超时

该步骤调用可能需要很长时间才能运行的程序。我发现如果程序花费的时间超过1分40秒,则步骤失败,并显示错误消息“操作超时”。该程序实际上继续运行并生成期望的结果。

如何设置此作业中步骤的超时时间。或者,如果有一种方法可以设置整个作业的超时时间,因为这是作业中唯一的步骤。如果一切都失败了,我会愿意改变整个服务器的超时时间,但显然这是最后的手段。

我已经尝试寻找步骤,作业和SQL Server代理的属性,但没有设法找到任何设置此选项。

回答

2

SQL作业没有超时 - 如果它们运行时间过长或达不到特定时间点,则无法将其配置为自行停止。 (如果可能的话,会为我节省很多开发时间!)您可以配置步骤来检查时间或持续时间,并且可以编码步骤中采取的操作以检查时间,但是在作业或步骤级别,不会。

这是什么使这成为一个有趣的问题。你为什么会超时?根据你所说的话,我猜测SQL代理不能告诉操作系统已经收到你通过cmdexec步骤发送的“do this”命令。发送并等待后,它认为该作业从未开始并据此报告(并且存在隐藏的系统超时)。这是怎么发生的?您可以投资安全配置或文件访问权限,但我会首先回顾一下您启动的任何常规程序 - 有关它的一些腥味让我感到腥味。

+0

感谢您的回复。被调用的程序只是调用webservices的代理。我有它的其他工作运行,它工作得很好,但这些Web服务不需要很长时间运行。 – YonahW 2009-07-29 17:20:09

1

Webservices是你的答案。正如Phillip指出的那样,SQL Server作业中的步骤没有时间。

您可能需要问的一个问题是Web服务超时的原因。根据我的经验,问题可能在于您运行的请求太大,要么返回太长的结果,要么导致其他问题,导致Web服务运行很长。

否则,您需要与Web服务提供商交谈以延长超时时间。

+0

Web服务确实运行时间很长,但是当我直接访问它时,它不会超时,只需要很长时间。 – YonahW 2009-08-20 13:52:30