sp_addrolemember (Transact-SQL)
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
在目前資料庫的資料庫角色中,加入資料庫使用者、資料庫角色、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
新增至 AdventureWorks2022
資料庫作為使用者 Mary5
。 然後,使用者 Mary5
會新增至 Production
角色。
因為 Contoso\Mary5
稱為資料庫中的資料庫使用者Mary5
AdventureWorks2022
,因此必須指定用戶名稱Mary5
。 除非登入存在, Contoso\Mary5
否則語句會失敗。 使用您網域的登入進行測試。
USE AdventureWorks2022;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5];
GO
B. 新增資料庫使用者
下列範例會將資料庫使用者 Mary5
新增至 Production
目前資料庫中的資料庫角色。
EXEC sp_addrolemember 'Production', 'Mary5';
範例:Analytics Platform System (PDW)
C. 新增 Windows 登入
下列範例會將登入 LoginMary
新增至 AdventureWorks2022
資料庫作為使用者 UserMary
。 然後,使用者 UserMary
會新增至 Production
角色。
注意
由於登入LoginMary
稱為資料庫中的資料庫使用者UserMary
AdventureWorks2022
,因此必須指定用戶名稱UserMary
。 除非登入存在, Mary5
否則語句將會失敗。 登入和使用者通常具有相同的名稱。 此範例會使用不同的名稱來區分影響登入與用戶的動作。
-- Uses AdventureWorks2022
CREATE USER UserMary FOR LOGIN LoginMary;
GO
EXEC sp_addrolemember 'Production', 'UserMary'
D. 新增資料庫使用者
下列範例會將資料庫使用者 UserMary
新增至 Production
目前資料庫中的資料庫角色。
EXEC sp_addrolemember 'Production', 'UserMary'