適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 資料庫
在目前資料庫的資料庫角色中,加入資料庫使用者、資料庫角色、Windows 登入或 Windows 群組。
重要
SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 ALTER ROLE 。
Syntax
sp_addrolemember
[ @rolename = ] N'rolename'
, [ @membername = ] N'membername'
[ ; ]
注意
Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。
引數
[ @rolename = ] N'rolename'
目前資料庫中資料庫角色的名稱。 @rolename為 sysname,沒有預設值。
[ @membername = ] N'membername'
要新增至角色的安全性帳戶。 @membername為 sysname,沒有預設值。 @membername可以是資料庫用戶、資料庫角色、Windows 登入或 Windows 群組。
傳回碼值
0 (成功) 或 1 (失敗)。
備註
使用 sp_addrolemember 新增至角色的成員會繼承角色的許可權。 如果新成員是沒有對應資料庫使用者的 Windows 層級主體,則會建立資料庫使用者,但可能不會完全對應至登入。 請一律檢查登入是否存在,並具有資料庫的存取權。
角色不能將本身納入為成員。 即使一或多個中繼成員資格間接隱含成員資格,這類 迴圈 定義也無效。
sp_addrolemember 無法將固定資料庫角色、固定伺服器角色或 dbo 新增至角色。
僅使用 sp_addrolemember 將成員新增至資料庫角色。 若要將成員新增至伺服器角色,請使用 sp_addsrvrolemember。
權限
將成員新增至彈性資料庫角色需要下列其中一個許可權:
db_securityadmin或db_owner固定資料庫角色中的成員資格。
擁有角色之角色的成員資格。
ALTER ANY ROLE角色的許可權或ALTER許可權。
將成員新增至固定資料庫角色需要db_owner固定資料庫角色的成員資格。
範例
A. 新增 Windows 登入
下列範例會將 Windows 登入 Contoso\Mary5 新增至 AdventureWorks2025 資料庫作為使用者 Mary5。 然後,使用者 Mary5 會新增至 Production 角色。
因為 Contoso\Mary5 稱為資料庫中的資料庫使用者Mary5AdventureWorks2025,因此必須指定用戶名稱Mary5。 除非登入存在, Contoso\Mary5 否則語句會失敗。 使用您網域的登入進行測試。
USE AdventureWorks2022;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5];
GO
B. 新增資料庫使用者
下列範例會將資料庫使用者 Mary5 新增至 Production 目前資料庫中的資料庫角色。
EXECUTE sp_addrolemember 'Production', 'Mary5';
範例:Analytics Platform System (PDW)
C. 新增 Windows 登入
下列範例會將登入 LoginMary 新增至 AdventureWorks2025 資料庫作為使用者 UserMary。 然後,使用者 UserMary 會新增至 Production 角色。
注意
由於登入LoginMary稱為資料庫中的資料庫使用者UserMaryAdventureWorks2025,因此必須指定用戶名稱UserMary。 除非登入存在, Mary5 否則語句將會失敗。 登入和使用者通常具有相同的名稱。 此範例會使用不同的名稱來區分影響登入與用戶的動作。
-- Uses AdventureWorks2022
CREATE USER UserMary FOR LOGIN LoginMary;
GO
EXECUTE sp_addrolemember 'Production', 'UserMary';
D. 新增資料庫使用者
下列範例會將資料庫使用者 UserMary 新增至 Production 目前資料庫中的資料庫角色。
EXECUTE sp_addrolemember 'Production', 'UserMary';