SQL Server:获取应用程序的名称,从而导致触发器更新

mar*_*c_s 17 sql-server triggers sql-server-2005

我们正在尝试查明SQL Server表上发生的一些意外更新的来源.我想要做的是在该表上创建一个触发器,监视我们感兴趣的列,并在发生更新时,将一些审计信息写入单独的表中.

对于诸如用户名,日期,旧列和新列值(来自InsertedDeleted触发表)之类的东西工作得很好- 但是我想要更多:-)

在SQL事件探查器中,您可以在配置文件中看到连接到SQL Server的应用程序的名称 - 可以在连接字符串中定义的部分Application Name:

Data Source=(local);Initial Catalog=AdventureWorks;
Integrated Security=True;Application Name="My Application"
Run Code Online (Sandbox Code Playgroud)

有没有办法在T-SQL FOR UPDATE触发器中获取此信息?

Mar*_*ith 31

SELECT APP_NAME()
Run Code Online (Sandbox Code Playgroud)

  • @marc - 您也可以从sys.dm_exec_sessions中的SELECT program_name获取它,其中session_id = @@ SPID`可能还有其他感兴趣的内容. (4认同)
  • Sheeesh !! 不能**那个**容易,马丁!! ;-)我一直在搜索所有`@@ name`值,但找不到任何东西...... (3认同)