sp_addrolemember (Transact-SQL)
適用于:SQL Server
Azure SQL資料庫
Azure SQL 受控執行個體Azure Synapse
Analytics Analytics
Platform System (PDW)
在目前資料庫的資料庫角色中,加入資料庫使用者、資料庫角色、Windows 登入或 Windows 群組。
重要
未來的 Microsoft SQL Server 版本將移除這項功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 ALTER ROLE 。
Syntax
sp_addrolemember [ @rolename = ] 'role', [ @membername = ] 'security_account'
注意
Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。
引數
[ @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_addsrvrolemember (Transact-SQL) 。
權限
將成員加入彈性資料庫角色中需要下列其中一項:
db_securityadmin或db_owner固定資料庫角色的成員資格。
擁有此角色之角色中的成員資格。
角色的 ALTER ANY ROLE 許可權或 ALTER 許可權。
將成員加入固定資料庫角色需要 db_owner 固定資料庫角色中的成員資格。
範例
A. 加入 Windows 登入
下列範例會將 Windows 登入 Contoso\Mary5
新增至 AdventureWorks2012
資料庫作為使用者 Mary5
。 然後會將 Mary5
使用者加入到 Production
角色。
注意
由於 Contoso\Mary5
在 AdventureWorks2019 資料庫中稱為資料庫使用者 Mary5
,因此必須指定使用者名稱 Mary5
。 除非 Contoso\Mary5
登入存在,否則此陳述式會失敗。 請從您的網域使用登入來測試。
USE AdventureWorks2012;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5] ;
GO
B. 加入資料庫使用者
下列範例會將資料庫使用者 Mary5
加入目前資料庫的 Production
資料庫角色中。
EXEC sp_addrolemember 'Production', 'Mary5';
範例:Analytics Platform System (PDW)
C. 加入 Windows 登入
下列範例會將登入 LoginMary
新增至 AdventureWorks2008R2
資料庫作為使用者 UserMary
。 然後會將 UserMary
使用者加入到 Production
角色。
注意
由於登入 LoginMary
稱為 AdventureWorks2019 資料庫中的資料庫使用者 UserMary
,因此必須指定使用者名稱 UserMary
。 除非 Mary5
登入存在,否則此陳述式會失敗。 登入和使用者通常具有相同的名稱。 此範例使用不同的名稱來區分影響登入與使用者之動作。
-- Uses AdventureWorks
CREATE USER UserMary FOR LOGIN LoginMary ;
GO
EXEC sp_addrolemember 'Production', 'UserMary'
D. 加入資料庫使用者
下列範例會將資料庫使用者 UserMary
加入目前資料庫的 Production
資料庫角色中。
EXEC sp_addrolemember 'Production', 'UserMary'
另請參閱
安全性預存程序 (Transact-SQL)
sp_addsrvrolemember (Transact-SQL)
sp_droprolemember (Transact-SQL)
sp_grantdbaccess (Transact-SQL)
系統預存程序 (Transact-SQL)
資料庫層級角色