表中的一个数据库字段正在被某段代码修改。我只是无法弄清楚在哪里!
所以,我想知道我是否有办法找到答案。
我正在使用SQL 2008.可以使用 Profiler 来查明特定字段是否正在更新?怎么样?
触发器怎么样?如果使用触发器(例如,在UPDATE上),你可以确定代码叫什么代码吗?触发器怎么能“通知我”这个?电子邮件/文件?
答案 0 :(得分:4)
是的,该特定表格和字段上的“AFTER UPDATE”触发器可能会为您提供有关字段更改的时间和原因的一些线索。
来自联机丛书:
CREATE TRIGGER reminder
ON Person.Address
AFTER UPDATE
AS
IF ( UPDATE (StateProvinceID) OR UPDATE (PostalCode) )
BEGIN
RAISERROR (50009, 16, 10)
END;
GO
触发器基本上可以执行任何T-SQL代码 - 如果您正确设置了数据库邮件,它可以向您发送电子邮件,是的。或者它可以将审计条目写入另一个表或类似的表。
编辑:如果您需要找出哪些语句更新了您的列,您可能最好在服务器上运行跟踪,仅限于该特定表,并只跟踪那里发生的情况。我不认为触发器可以为您提供该信息(哪些代码导致更新发生)。
马克
答案 1 :(得分:1)
确定对表的最后更新或选择(没有触发器!)
答案 2 :(得分:0)
是的,您可以使用触发器在更新表时执行某些代码(跟踪谁更新了表,通过电子邮件发送给您等)。请看这个链接:Track Updates with a Database Trigger
编辑:最初发布了错误的链接