我刚开始一份新工作,并且有一个错误来追踪并修复。基本问题是DB记录中的字段被清除,没有人知道原因。到目前为止,我已经尝试过:
有没有人有任何其他建议可以找到可以更新此记录的内容?我不是在检查我应该做的事吗?我应该看一下其他任何信息来源吗?
答案 0 :(得分:2)
创建一个将写入历史记录表的触发器。包括写日期和用户的列。
答案 1 :(得分:2)
:: fn_dblog()将至少显示更新发生的时间(序列,而不是时间)以及该事务执行的其他操作。根据此事务所执行的其他操作以及此时其他事务正在执行的操作的信息,您应该能够至少缩小更新发生的上下文,从这一点开始代码检查是可行的选择。
读取日志需要...日志,因此您的数据库应处于完全恢复模式。
答案 2 :(得分:0)
select
schema_name = s.name,
object_name = o.name
from sys.sql_modules m join sys.objects o on m.object_id = o.object_id
join sys.schemas s on o.schema_id = s.schema_id
where definition like '%FieldName%'
此查询查看数据库中的所有对象(存储过程,函数,视图),并查找引用“FieldName”的任何位置。我将浏览此查询返回的所有对象,以查看是否有任何异常的字段。这可能是非常繁琐的,因为它可能会返回比您关心的更多结果,但它确实可以捕获所有对该字段的引用
答案 3 :(得分:0)
如果您使用的是SQL Server 2008,则可以使用扩展事件来获取有问题的语句的完整堆栈跟踪。示例代码Create Trigger to log SQL that affected table?