我如何知道我的数据库用户属于哪个AD组? 我需要找出特定用户在数据库中拥有的所有权限。数据库中特定用户的权限是什么?
0
A
回答
1
如果您正在查找给定用户的所有权限路径,请使用sys.login_token和sys.user_token。
sys.login_token将为您提供当前服务器主体所属的所有AD组,这些AD组也被定义为登录名。例如,如果AD用户[域\用户]是[域\组1]和[域\组2]的成员,并且只有组1被定义为登录,则只有组1会出现在列表中。 sys.login_token还将列出登录所属的任何服务器级角色。
sys.user_token是一样的,除了一切都是数据库作用域。
由于这两个视图都是在“当前用户”的上下文中操作的,因此您需要模拟其他人来查找其权限。语法是很容易的:
execute as login = 'domain\user';
select * from sys.login_token;
select * from sys.user_token;
revert;
要获得已明确授予用户的任何权限,检查出的sys.database_permissions和sys.server_permissions。
select * from sys.database_permissions
where grantee_principal_id = user_id();
select * from sys.server_permissions
where grantee_principal_id = suser_id();
最后,如果你不想去通过努力来计算,你可以从不同的路径拿起所有权限,看看sys.fn_my_permissions。基本的语法是:
select * from sys.fn_my_permissions('dbo.table', 'object');
1
使用sys.fn_my_permissions
SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
返回调用者的有效权限的列表。
SELECT * FROM fn_my_permissions('ATLY', 'USER');
返回名为'ATLY'的用户的有效权限列表。
相关问题
- 1. 如何检查sql用户对特定数据库有什么权限
- 2. 显示具有特定数据库权限的用户
- 3. “真实”数据库授予用户什么权限?
- 4. MySQL用户创建数据库需要什么权限?
- 5. 我对数据库有什么权限
- 6. mysql:具有授权选项的数据库特定用户权限委托
- 7. PostgreSQL数据库的Apache用户权限
- 8. 什么数据库特权授予用户?
- 9. 在MySQL的特定数据库中删除用户的所有权限
- 10. 在多个表格的数据库中设置列特定的用户权限
- 11. 创建MySQL数据库,用户和授予权限所需的最低权限是什么?
- 12. 授予数据库用户权限
- 13. Moodle数据库 - 用户权限
- 14. phpmyadmin限制特定数据库的权限
- 15. 数据库是不可见的MySQL用户使用权限
- 16. 关于MySQL数据库权限,“\ _%”是什么意思?
- 17. 具有特定权限的Postgresql用户
- 18. 检查Oracle用户的特定权限
- 19. 检查特定用户在LightSwitch中特定的权限
- 20. 用户访问权限检查特定数据库对象或记录的权限
- 21. 什么数据库权限需要Magento中的Reindex工具?
- 22. 根据用户权限在JSF中禁用特定字段
- 23. 为什么数据库用户的权限部分为空在MS SQL Server 2008R2
- 24. 从数据库表中删除用户帐户权限
- 25. 什么是JIRA权限API中的deprecatedKey和什么是用法
- 26. 是否可以为用户设置数据库行级权限?
- 27. 授予通配符数据库的权限但特定表格
- 28. 权限授予MySQL用户无法访问由引发的特定数据库:java.sql.SQLException中:拒绝访问用户
- 29. 什么是T-SQL授予对SQL Server数据库中表的读写权限?
- 30. Oracle数据库:11gR2更改数据库链接,它需要什么样的用户权限?
对于任何一个都不完全。第一条语句将返回授予当前用户的任何数据库级权限。也就是说,如果有人跑'grant select到[youruser]',那么这个权限就会出现在这里。第二,这将返回授予您的用户对所述用户的任何权限。也就是说,你会看到诸如“模仿”或“控制”之类的东西。但是,关于这一点,它不会告诉你任何关于用户可以做什么和不可以做什么的事情。 – 2014-10-16 12:39:35
我只是想为我自己的参考添加一个存储过程,使用WEXECUTE AS OWNER,如果我需要知道调用者的权限,则使用以下select:select database_user = USER_NAME(),[login] = SUSER_SNAME(),[原始登录] = ORIGINAL_LOGIN() – 2014-10-20 12:29:59