sp_addrolemember (Transact-SQL)
在目前資料庫的資料庫角色中,加入資料庫使用者、資料庫角色、Windows 登入或 Windows 群組。
語法
sp_addrolemember [ @rolename = ] 'role',
[ @membername = ] 'security_account'
引數
- [ @rolename = ] 'role'
這是目前資料庫中的資料庫角色名稱。role 是 sysname,沒有預設值。
- [ @membername = ] 'security_account'
這是加入角色的安全性帳戶。security_account 是 sysname,沒有預設值。security_account 可以是資料庫使用者、資料庫角色、Windows 登入或 Windows 群組。
傳回碼值
0 (成功) 或 1 (失敗)
備註
使用 sp_addrolemember 加入角色中的成員,會繼承該角色的權限。如果新成員是沒有對應資料庫使用者的 Windows 層級主體,則會建立一個資料庫使用者。
角色不能包含它自己作為成員。這類「循環」定義是無效的,即使成員資格只是由一或多個中繼成員資格間接隱含也一樣。
sp_addrolemember 無法在角色中加入固定資料庫角色、固定伺服器角色或 dbo。在 SQL Server Serivce Pack 1 之前,sp_addrolemember 無法在使用者自訂交易中執行。
您只能使用 sp_addrolemember 將成員加入資料庫角色中。若要將成員加入伺服器角色中,請使用 sp_addsrvrolemember (Transact-SQL)。
請勿將彈性角色加入做為固定角色的成員。這可能會造成意外的權限提升。
權限
在彈性資料庫角色中加入成員時,需要下列其中一項條件:
- db_owner 固定資料庫角色中的成員資格。
- db_securityadmin 固定資料庫角色中的成員資格。
- 擁有該角色之角色中的成員資格。
- 角色的 ALTER 權限。
在固定資料庫角色中加入成員時,需要 db_owner 固定資料庫角色中的成員資格。
範例
A. 加入 Windows 登入
下列範例會將 Windows 登入 Contoso\Mary5
加入
至 AdventureWorks
資料庫中成為使用者 Mary5
。然後再將這個使用者 Mary5
加入至 Production
角色。
附註: |
---|
由於 Contoso\Mary5 又稱為 AdventureWorks 資料庫中的資料庫使用者 Mary5 ,因此必須使用 sp_addrolemember 來指定使用者名稱 Mary5 。 |
USE AdventureWorks
GO
EXEC sp_grantdbaccess 'Contoso\Mary5', 'Mary5'
GO
EXEC sp_addrolemember 'Production', 'Mary5'
B. 加入資料庫使用者
下列範例會將資料庫使用者 Mary5
加入目前資料庫的 Production
資料庫角色中。
EXEC sp_addrolemember 'Production', 'Mary5'
請參閱
參考
安全性預存程序 (Transact-SQL)
sp_addsrvrolemember (Transact-SQL)
sp_droprolemember (Transact-SQL)
sp_grantdbaccess (Transact-SQL)
系統預存程序 (Transact-SQL)