s
WHERE grantee_principal_id = USER_ID('guest');
使用系统函数标识用户和登录
可以使用很多系统函数获取用户和登录的信息。
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组成员 |