Sql-Server
T-SQL 如何在 SQL Server 2008 中使用 ADMIN/GRANT 選項向使用者授予角色
創建角色並授予他們權限後,我想將指定角色的權限授予具有授予選項的使用者,以便該使用者可以將權限授予其他人,如何處理?
EXEC sp_addrolemember 'db_owner', 'sabertazimi'
這樣做不能讓’sabertazimi’將他的特權授予他人。
對於您在問題中使用的特定程式碼,您不能使用
WITH GRANT OPTION
通常用於授予權限的程式碼,以便使用者可以將相同的權限授予其他使用者。有關詳細資訊和範例,請參見: https ://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-addrolemember-transact-sql
權限
將成員添加到靈活的數據庫角色需要以下條件之一:
- db_securityadmin 或 db_owner 固定數據庫角色中的成員身份。
- 擁有該角色的角色的成員資格。
- ALTER ANY ROLE 權限或角色的 ALTER 權限。
將成員添加到固定數據庫角色需要 db_owner 固定數據庫角色的成員身份。
GRANT
有關使用語句的權限,請參見以下連結:
據我們所知:
GRANT … WITH GRANT OPTION 指定接收權限的安全主體被授予將指定權限授予其他安全帳戶的能力。
當接收權限的主體是角色或Windows組時,當需要進一步將對象權限授予非組或角色成員的使用者時,必須使用AS子句。因為只有使用者而不是組或角色可以執行 GRANT 語句,所以組或角色的特定成員在授予權限時必須使用 AS 子句顯式呼叫角色或組成員資格。
以下範例顯示了在授予角色或 Windows 組時如何使用 WITH GRANT OPTION。
-- Execute the following as a database owner GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION; EXEC sp_addrolemember TesterRole, User1; -- Execute the following as User1 -- The following fails because User1 does not have the permission as the User1 GRANT EXECUTE ON TestMe TO User2; -- The following succeeds because User1 invokes the TesterRole membership GRANT EXECUTE ON TestMe TO User2 AS TesterRole;
完整的文件可以在這個連結中閱讀: GRANT (Transact-SQL)
希望這有幫助。