我应该使用哪个来记录用户所做的更新?
SYSTEM_USER
,ORIGINAL_LOGIN()
, 或者SUSER_SNAME()
我应该使用哪个来记录用户所做的更新?
SYSTEM_USER
,ORIGINAL_LOGIN()
, 或者SUSER_SNAME()
SYSTEM_USER
返回当前执行环境,因此这可能会返回模拟的上下文。
ORIGINAL_LOGIN()
返回最初连接到实例的用户身份,因此无论上下文是否被模拟,它都将产生最初登录的原始用户,适用于审计。
SUSER_SNAME()
可以根据SID获取用户名,因此可以使用如下参数调用 SUSER_SNAME([server_user_sid])
但是SID是可选的,如果不传递该参数,则返回当前用户。
当前用户(包括模拟用户)可通过 SELECT USER_NAME()
查询到。
https://learn.microsoft.com/en-us/sql/t-sql/functions/user-name-transact-sql?view=sql-server-ver16