使用sqlcmd按批处理文件运行SQL Server作业

时间:2015-08-07 03:16:22

标签: sql-server

我已使用SQLCMD为触发SQL作业创建了批处理文件,但我们无法捕获作业运行的最后状态。请让我知道我们需要在批处理文件中编写哪些代码。

根据我们的代码,我们只在作业运行时捕获,但我们希望作业状态失败或通过。我已经尝试了很多东西甚至能够捕获日志,但我们只想要最后的工作状态。

以下是批处理文件中使用的代码:

echo execute job
sqlcmd -S "servername" -Q "execute msd.dbo.sp_start_job @job_name='Test_Job_Autosys'" -o c:\sqlscript\output.txt

if errorlevel 1 exit/b

echo job execution completed

输出:

Job started successfully

我们无法捕获工作失败或通过;请告诉我们如何捕捉工作状态。

1 个答案:

答案 0 :(得分:0)

像Nick.McDermaid说的那样。作业以异步方式启动,因此无需等待找出作业的状态即可返回。

我建议你在一个存储过程中包含对msd.dbo.sp_start_job的调用。 这样,您可以监视作业状态,并在作业失败时返回或引发错误。

这里有一篇文章更详细地解释了它。

Querying agent job status, executing and waiting for job completion from within T-SQL

希望有所帮助