SQL Server:获取导致触发器更新的应用程序的名称
我们正在尝试查明 SQL Server 表上发生的一些意外更新的来源。我想做的是在该表上创建一个触发器来监视我们感兴趣的列,并且当发生更新时,将一些审核信息写入单独的表中。
对于用户名、日期、旧列值和新列值(来自 Inserted
和 Deleted
触发器表)等内容效果很好 - 但我想要更多:-)
在 SQL Profiler 中,您可以在配置文件中看到连接到 SQL Server 的应用程序的名称 - 可以在连接字符串中定义为应用程序名称
的部分:
Data Source=(local);Initial Catalog=AdventureWorks;
Integrated Security=True;Application Name="My Application"
有没有办法在 T- SQL FOR UPDATE
触发器来获取此信息?
We're trying to pinpoint the source of some unexpected updates happening on a SQL Server table. What I'd like to do is create a trigger on that table monitoring that column we're interested in, and when updates occur, write some audit info into a separate table.
Works great and fine for things like user name, date, old and new columns values (from the Inserted
and Deleted
trigger tables) - but I'd like more :-)
In SQL Profiler, you can see the name of the app that's connected to SQL Server in the profiles - the part that can be defined in the connection string as Application Name
:
Data Source=(local);Initial Catalog=AdventureWorks;
Integrated Security=True;Application Name="My Application"
Is there any way in a T-SQL FOR UPDATE
trigger to get at this information?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Marc_S 的 sp_whoIsActive 存储过程可能会解决您的问题
如此处发布的
顺便说一下,它是 T-SQL 的很棒的一部分
Marc_S the sP_whoIsActive stored Procedure probably will solve Your problems
as posted here
and it's awesome part of T-SQL by the way
不确定,但如果您的应用程序位于多个服务器上,您是否可以记录服务器名称?它可能有助于缩小应用程序列表的范围。
Not sure but could you possibly log the server name if you applications are on multiple servers? It might help narrow down the list of applications.