2010-11-04 33 views
1

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

我试图用USER_NAME(USER_ID()),但我得到的是“DBO”

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

回答

3

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

2

使用ORIGINAL_LOGIN()多数民众赞成什么用于审计,因为它返回连接的用户的身份,无论该上下文是否被模拟或不。

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