SQL Server代理作业失败
问题描述:
我最近开始支持在SQL Server 2008 R2中为其维护数据库的项目。SQL Server代理作业失败
有一个SQL服务器代理DBMR作业在几天前一直运行良好。现在,它一直在失败,错误“无法找到存储过程'XXX'”。当我查看主数据库时,该过程不存在。
有没有一种方式(日志或事件查看器像应用程序)从SQL Server管理工作室我可以找出SP最近是否已被某人删除?
根据一个强有力的假设,没有人会删除任何SP ..我真的很困惑这个工作如何运行良好,直到2天,现在失败。任何建议/想法的欢迎。谢谢。
答
谢谢大家的建议/答案。
我们的一位工程师试图安装不同的DBMR版本,并删除了一些作业,SP等。对不起,如果浪费你的时间。
答
SELECT * FROM sys.fn_dblog(NULL, NULL);
使用上面的查询,您将能够识别下降存储过程描述了使用
SELECT CONVERT(varchar(max), SUBSTRING([RowLog Contents 0], 33, LEN([RowLog Contents 0]))) AS Script FROM fn_dblog(NULL, NULL) WHERE Operation = 'LOP_DELETE_ROWS' AND Context = 'LCX_MARK_AS_GHOST' AND AllocUnitName = 'sys.sysobjvalues.clst' AND [TRANSACTION ID] IN (SELECT DISTINCT [TRANSACTION ID] FROM sys.fn_dblog(NULL, NULL) WHERE Context IN ('LCX_NULL') AND Operation IN ('LOP_BEGIN_XACT') AND [Transaction Name] = 'DROPOBJ' AND CONVERT(nvarchar(11), [Begin Time]) BETWEEN '2013/07/31' AND '2015/08/1') AND SUBSTRING([RowLog Contents 0], 33, LEN([RowLog Contents 0])) <> 0;
上面粘贴的查询,您可以重新生成删除程序
为安全起见,我已采取从2013年到2015年的日期开始时间,所以结果集应包括所有丢弃的程序(对象)
希望这会帮助你
更多阅读
http://solutioncenter.apexsql.com/recover-a-specific-dropped-object/
http://solutioncenter.apexsql.com/how-to-recover-stored-procedures-functions-and-triggers/
答
您可以使用该功能fn_dblog
SELECT
Operation,
[Transaction Id],
SUSER_SNAME([Transaction SID]),
[Transaction Name],
[Begin Time],
[SPID],
Description
FROM fn_dblog (NULL, NULL)
WHERE [Transaction Name] = 'DROPOBJ'
GO
在databa执行此se删除对象的位置。
可能有机会更改此作业所运行的用户的权限可能导致此问题。请DBA's检查该SP是否存在。如果他们表示不存在,那么其中一个已被删除,否则要求他们授予更早的权限。 – 2014-09-25 10:58:33
权限不是问题,因为在同一用户下很少有其他工作正常运行。 – Xavi 2014-09-25 11:06:23
对于您的信息,每个对象可以有不同的权限,当然我们必须从DBA获得确认。 – 2014-09-25 11:07:49