【问题标题】:Working out what application is changing an sql database value找出哪个应用程序正在更改 sql 数据库值
【发布时间】:2011-05-23 05:07:17
【问题描述】:

我遇到了一个问题,即许多应用程序读取/写入的旧数据库不断更改,我无法弄清楚是什么在更改它。

我的应用程序更改了表格某行中的某个值,但在一周左右后某事不断将其更改回来,我很难弄清楚它可能是什么。

有什么方法可以将事件/触发器附加到该值上,然后让它存储/通过电子邮件发送更改它的详细信息?或者至少是什么时候改变的?

【问题讨论】:

    标签: sql sql-server tsql sql-server-2008 triggers


    【解决方案1】:

    如果您有权访问旧应用程序的连接字符串,请将 Application Name 关键字添加到连接字符串。 Some info here.

    在服务器端为您要跟踪的表创建触发器。在触发日志app_name() 中写入日志表。像这样:

    create trigger Tracker
    on TableName
    after insert, update, delete 
    as
        insert LogTable(TableName, ApplicationName)
        values('TableName', app_name())
    go
    

    此外,如果每个应用程序都有一个专用用户,您可以检查并记录 system_user 值。

    如果您的应用程序由不同的服务器托管,您也可以添加客户端 IP。你可以这样查看select client_net_address from sys.dm_exec_connections where session_id = @@SPID

    此外,您可以使用分析器查看所有这些参数。

    但所有这些都需要注意,您可以更新连接字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 2016-10-08
      • 1970-01-01
      • 2015-09-01
      相关资源
      最近更新 更多