使用系统函数标识用户和登录
可以使用很多系统函数获取用户和登录的信息。
SYSTEM_USER和SUSER_SNAME(),返回当前登录信息,并包含SID。其中SUSER_SNAME()返回一个来自登录名或当前登录的SID,如果没有带有参数,在安全上下文更改时(EXECUTE AS ),会返回模拟登录。
CURRENT_USER和SESSION_USER返回当前数据库的当前上下文的用户名,USER_ID()或DATABASE_PRINCIPAL_ID()返回数据库的principal_id,而SUSER_SID()返回SID。
可以使用下面语句列出所有可以访问的数据库名:
SELECT [Name] FROM sys.databases WHERE HAS_DBACCESS ([Name]) = 1 AND database_id > 4 ORDER BY [Name];
如果需要查询某个用户是否属于Windows的组成员,可以使用IS_MEMBER()函数:
SELECT IS_MEMBER('DOMAIN\developers');
下面是可以使用的函数既描述:
| 函数名 | 描述 |
| SYSTEM_USER | 返回当前服务器登录名 |
| SUSER_SNAME() | 返回当前服务器登录名 |
| SUSER_ID() | 返回当前服务器SID |
| CURRENT_USER | 返回当前数据库用户 |
| SESSION_USER | 返回当前数据库用户 |
| USER_ID() | 返回当前数据库principal_id |
| DATABASE_PRINCIPAL_ID() | 返回当前数据库principal_id |
| ORIGINAL_LOGIN() | 返回在上下文切换钱的原始登录名 |
| HAS_DBACCESS('database') | 1代表当前登录可以访问数据库 |
| IS_MEMBER('group') | 1代表当前登录是Windows组成员 |