SQL Server中SYSTEM_USER和USER有什么区别?

时间:2014-03-01 11:18:11

标签: sql-server tsql

我对数据库很陌生,并且在MSSQL中的关键字SYSTEM_USERUSER之间感到困惑。定义表明它们在当前上下文中返回用户名。但我运行的实例为USER返回'dbo',为系统用户返回'sa'。

有人可以突出显示两者之间的确切差异吗?

3 个答案:

答案 0 :(得分:1)

SYSTEM_USER返回当前系统用户名。

USER返回数据库用户名。

答案 1 :(得分:1)

  • SYSTEM_USER返回用于登录实例的服务器登录名(SQL Server登录名或域/ Windows用户名)。
  • USERCURRENT_USERUSER_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

登录的用户