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