sp_addrolemember (Transact-SQL)

在目前資料庫的資料庫角色中,加入資料庫使用者、資料庫角色、Windows 登入或 Windows 群組。

重要事項重要事項

未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。請改用 ALTER ROLE

主題連結圖示 Transact-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'

請參閱

參考

安全性預存程序 (Transact-SQL)

sp_addsrvrolemember (Transact-SQL)

sp_droprolemember (Transact-SQL)

sp_grantdbaccess (Transact-SQL)

系統預存程序 (Transact-SQL)

資料庫層級角色