如何处理SQL Server Management Studio中的作业失败?

时间:2018-06-22 04:11:54

标签: sql-server ssms

我已经在SQL Server Management Studio中创建了计划作业,该作业在特定时间执行存储过程。 但是,有时会由于死锁而无法执行该过程,如作业历史记录所示。 现在,我想在包含作业失败详细信息的表中插入一个值,只要作业无法完全运行即可。 我该如何实现? 谢谢!

1 个答案:

答案 0 :(得分:1)

我假设您正在寻找捕获存储过程中出问题的地方,并保留该信息。 (因为“ 每当作业无法完全运行时,”还包括此解决方案无法解决的其他可能性,例如,如果作业由于登录失败而无法启动,或者该帐户无法访问您的帐户,存储过程)。

如果用TRY ... CATCH包围StoredProc的当前内容,如下所示:

BEGIN TRY
  -- the current contents of your StoredProc
END TRY
BEGIN CATCH
  SELECT
    ERROR_NUMBER() AS ErrorNumber
    ,ERROR_SEVERITY() AS ErrorSeverity
    ,ERROR_STATE() AS ErrorState
    ,ERROR_PROCEDURE() AS ErrorProcedure
    ,ERROR_LINE() AS ErrorLine
    ,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;

然后,您可以将这些信息及其发生的时间INSERT define('WP_ALLOW_REPAIR', true);放入表中。

有关更多信息,请参见Microsoft的TRY...CATCH的Transact SQL文档,其中包含由TRY ... CATCH捕获的不是的事物的列表。