Sql-Server

T-SQL 如何在 SQL Server 2008 中使用 ADMIN/GRANT 選項向使用者授予角色

  • March 2, 2019

創建角色並授予他們權限後,我想將指定角色的權限授予具有授予選項的使用者,以便該使用者可以將權限授予其他人,如何處理?

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)

希望這有幫助。

引用自:https://dba.stackexchange.com/questions/173286