sp_addrolemember (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

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

重要

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

Transact-SQL 語法慣例

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 (Transact-SQL)

權限

將成員新增至彈性資料庫角色需要下列其中一個許可權:

  • db_securityadmin或db_owner固定資料庫角色中的成員資格。

  • 擁有角色之角色的成員資格。

  • ALTER ANY ROLE 角色的許可權或 ALTER 許可權。

將成員新增至固定資料庫角色需要db_owner固定資料庫角色的成員資格。

範例

A. 新增 Windows 登入

下列範例會將 Windows 登入 Contoso\Mary5 新增至 AdventureWorks2022 資料庫作為使用者 Mary5。 然後,使用者 Mary5 會新增至 Production 角色。

因為 Contoso\Mary5 稱為資料庫中的資料庫使用者Mary5AdventureWorks2022,因此必須指定用戶名稱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稱為資料庫中的資料庫使用者UserMaryAdventureWorks2022,因此必須指定用戶名稱UserMary。 除非登入存在, Mary5 否則語句將會失敗。 登入和使用者通常具有相同的名稱。 此範例會使用不同的名稱來區分影響登入與用戶的動作。

-- Uses AdventureWorks2022
CREATE USER UserMary FOR LOGIN LoginMary;
GO
EXEC sp_addrolemember 'Production', 'UserMary'

D. 新增資料庫使用者

下列範例會將資料庫使用者 UserMary 新增至 Production 目前資料庫中的資料庫角色。

EXEC sp_addrolemember 'Production', 'UserMary'