我对数据库很陌生,并且在MSSQL中的关键字SYSTEM_USER和USER之间感到困惑。定义表明它们在当前上下文中返回用户名。但我运行的实例为USER返回'dbo',为系统用户返回'sa'。
有人可以突出显示两者之间的确切差异吗?
答案 0 :(得分:1)
SYSTEM_USER返回当前系统用户名。
USER返回数据库用户名。
答案 1 :(得分:1)
SYSTEM_USER
返回用于登录实例的服务器登录名(SQL Server登录名或域/ Windows用户名)。USER
,CURRENT_USER
,USER_NAME()
或SESSION_USER
返回数据库用户名(不是正在使用的当前数据库的DB_Owner
)。注意:USER_NAME([user_id])
可以附加一个int-user-id,默认arg为1,即:USER_NAME(1)
与USER_NAME()
相同。
示例:
SELECT SYSTEM_USER --> myDomain\user.name
SELECT USER --> dbo
SELECT CURRENT_USER --> dbo
SELECT USER_NAME() --> dbo
SELECT SESSION_USER --> dbo
答案 2 :(得分:0)
根据difference between SYSTEM_USER and USER:
如果当前用户使用登录到Microsoft®SQLServerT Windows身份验证,SYSTEM_USER返回Windows 2000或 Windows NT 4.0登录标识名称
例如,DOMAIN \ user_login_name。
但是,如果当前用户使用SQL登录到SQL Server 服务器身份验证,SYSTEM_USER返回SQL Server登录 识别名称,
例如,sa为以sa
登录的用户