观察数据库列以确定正在修改的内容

jim*_*ble 1 sql-server-2005

如何找出修改配置表中的值的应用程序或SP?我以为我已经隔离了负责任的应用程序,但是当我继续将它们修改为假时,这些特殊值继续变回真实.

ric*_*ent 5

首先,创建一个日志表:

CREATE TABLE modlog(
   datestamp smalldatetime,
   username varchar(255) NOT NULL DEFAULT SYSTEM_USER
   );
Run Code Online (Sandbox Code Playgroud)

然后在表上创建一个UPDATE触发器:

CREATE TRIGGER mytable_mods ON mytable FOR UPDATE AS
   INSERT INTO modlog(smalldatetime) VALUES (GETDATE());
Run Code Online (Sandbox Code Playgroud)

只需查看modlog表,找出哪个用户正在更新表,以及何时更新.您可以获得想象力并记录特定字段的更新.

另一种方法是在SQL Server Profiler中设置跟踪,过滤掉它,因此它只返回该表的更新,并保持打开直到发生某些事情.

如果您的应用程序在其连接字符串中包含 ApplicationName参数,则可以使用 App_Name()而不是 SYSTEM_USER,它将记录应用程序名称,从而删除额外的侦探工作.了解用户可能仍然有用,因此您可以弄清楚他们正在做什么来触发更新.