sp_addrolemember (Transact-SQL)
在目前資料庫的資料庫角色中,加入資料庫使用者、資料庫角色、Windows 登入或 Windows 群組。
重要事項 |
---|
未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。請改用 ALTER ROLE。 |
適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure SQL 資料庫 (初始版本,透過目前版本)。 |
語法
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 加入角色中。 sp_addrolemember 無法在使用者定義交易內執行。
您只能使用 sp_addrolemember 將成員加入資料庫角色中。 若要將成員加入伺服器角色中,請使用<sp_addsrvrolemember (Transact-SQL)>。
權限
將成員加入彈性資料庫角色中需要下列其中一項:
db_securityadmin 或 db_owner 固定資料庫角色的成員資格。
擁有此角色之角色中的成員資格。
ALTER ANY ROLE 權限或角色的 ALTER 權限。
將成員加入固定資料庫角色需要 db_owner 固定資料庫角色中的成員資格。
範例
A.加入 Windows 登入
下列範例會將 Windows 登入 Contoso\Mary5 當做 Mary5 使用者加入到 AdventureWorks2012 資料庫。 然後會將 Mary5 使用者加入到 Production 角色。
注意
由於 Contoso\Mary5 又稱為 AdventureWorks2012 資料庫中的資料庫使用者 Mary5,因此必須指定 Mary5 使用者名稱。除非 Contoso\Mary5 登入存在,否則此陳述式會失敗。請從您的網域使用登入來測試。
USE AdventureWorks2012;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5] ;
GO
EXEC sp_addrolemember 'Production', 'Mary5'
B.加入資料庫使用者
下列範例會將資料庫使用者 Mary5 加入目前資料庫的 Production 資料庫角色中。
EXEC sp_addrolemember 'Production', 'Mary5'
請參閱
參考
sp_addsrvrolemember (Transact-SQL)
sp_droprolemember (Transact-SQL)