我如何知道我的數據庫用戶屬於哪個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