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

Shu*_*jee 3 t-sql sql-server

我对数据库很陌生,并且对 MSSQL 中的关键字SYSTEM_USERUSER感到困惑。定义说他们在当前上下文中返回用户名。但是我运行的实例为用户返回“dbo”,为系统用户返回“sa”。

有人可以强调两者之间的确切区别吗?

Edd*_*mar 6

  • 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
Run Code Online (Sandbox Code Playgroud)