sri*_*ari 6 sql-server sql-server-2005
实际上,其中一项关键作业在执行时失败了。
在错误消息中发现失败是因为它缺少存储过程。
现在我如何找出存储过程何时受到用户的影响。我如何找出哪个用户执行了此操作以及他何时执行了此操作?
Rem*_*anu 11
你得到管理跟踪:
select * from fn_trace_getinfo(NULL)
where property=2
and traceid = 1
Run Code Online (Sandbox Code Playgroud)
您可以查看对象类型8727 存储过程上的类 47 Object:Deleted Event Class事件的管理跟踪:
select * from fn_trace_gettable('....trc', -1)
where EventClass = 47
and ObjectType=8727
Run Code Online (Sandbox Code Playgroud)
管理跟踪会定期回收并保留大约 4-5 条跟踪,您应该使用仍然存在的最旧 trc 文件的名称。
如果程序很关键,那么 DBA 应该确保只有授权人员才能修改或删除它。它应该对架构更改进行适当的审计。这不是删除程序的人的错,而完全是 DBA 的错。
小智 7
默认情况下无法找到此信息,因为 SQL Server 不支持此信息。如果您的数据库处于完全恢复模式,您可以尝试读取事务日志并查看何时执行 DROP PROCEDURE 语句。不幸的是,没有简单的方法可以做到这一点。
您可以尝试使用一些第三方工具,例如ApexSQL Log或Quest Toad,但即使使用这些工具,我也不确定您是否能够找出执行此操作的用户名。
您可以尝试的另一个选择是查看 fn_dblog 函数,看看您是否可以使用它。这里的问题是这个功能没有很好的记录。
| 归档时间: |
|
| 查看次数: |
23643 次 |
| 最近记录: |