我正在寻找在代理作业完成之后自动重新启动SQL服务的方法,或者作为代理作业的最后一步。 我发现代理服务依赖于服务器服务,这甚至有可能吗?
Microsoft SQL Server标准版(64位)2008 R2(10.50.1777.0)
一点背景:
这将是一个临时的解决办法。
我们有一个sql服务器为我们的会计软件分析服务器运行一个导出工作。 运行后,sql server有时会变得无响应。 我假设其出口工作,因为禁用的工作没有反应迟钝。 这项工作大约需要30分钟才能完成,并在午夜时分开始工作。 重新启动SQL服务器服务手动修复此问题,并且是一个临时工作,直到我们可以找出导出作业导致问题的原因。 在sql变得没有响应之前,导出作业完成之后,我希望抢先重新启动服务。
我和评论员在一起。 我无法开始深究为什么你想这样做。 你想达到什么目的? 也许我们可以帮助你想出一个更好的解决scheme。
也就是说,您将无法从SQL代理作业(至less完全)内执行此操作,因为正如您所指出的那样,SQL代理服务依赖于SQL Server服务。 停止SQL Server停止SQL代理。 最好的情况是你可以发送一个重启信号给SQL Server服务,但是你不能得到任何东西的返回状态,如果有东西要往南走,你就失去了对这种情况的控制。
你可以编写一个服务或创build一个计划任务来监视有问题的作业,并在作业完成后重新启动。
但是,这听起来像是某种东西的创可贴。
编辑:如果你有一个可靠的时间,几小时后,你知道工作将完成,那么我只是创build一个计划的任务,当时重新启动服务使用Powershell脚本或restart-service MSSQLSERVER或restart-service -displayname "SQL Server (MSSQLSERVER)假设你正在谈论一个默认实例。
然后找出为什么服务停止。 运行SQL事件探查器跟踪,检查性能计数器,手动运行作业运行以隔离问题的事情。
如果SQL代理作业正在完成。 (这是一个很大的“如果”),那么作业的最后一步可以使用xpcmdshell来启动psservice(从PSTOOLS套件),并告诉SQL Server服务重启。
这真是糟糕的kludge-ey。 但是可以做到。