跟踪数据库上的Windows用户ID

时间:2010-11-04 23:06:38

标签: sql-server tsql

这就是问题所在。我有一个连接到SQL Server数据库的桌面应用程序。我有一个审计表,跟踪数据库级别的数据库更改。其中一个要求是根据Windows登录跟踪用户ID。有没有办法通过数据库上的触发器来做到这一点?

我尝试使用USER_NAME(USER_ID()),但我得到的只是“dbo”

或者我应该创建一个单独的存储过程来将用户ID从桌面应用程序传递到数据库?我不想走这条路,因为如果有人在sql server中更改db,那么我将无法跟踪它。

2 个答案:

答案 0 :(得分:3)

除非使用EXECUTE AS,否则两者返回相同的登录名。

答案 1 :(得分:2)

使用ORIGINAL_LOGIN()这是用于审计的,因为它返回连接的用户的身份,无论上下文是否被模拟。

这与我刚才回答的内容有类似的反应 - > SQL Server - current user name