ALTER SERVER ROLE (Transact-SQL)

適用対象: SQL Server サポートなし Azure SQL Database サポートなし Azure Synapse Analytics Analytics Platform System (PDW)

サーバー ロールのメンバーシップを変更、またはユーザー定義のサーバー ロールの名前を変更します。 固定サーバー ロールの名前は変更できません。

Topic link iconTransact-SQL 構文表記規則

構文

-- Syntax for SQL Server  
  
ALTER SERVER ROLE server_role_name   
{  
    [ ADD MEMBER server_principal ]  
  | [ DROP MEMBER server_principal ]  
  | [ WITH NAME = new_server_role_name ]  
} [ ; ]  
-- Syntax for Parallel Data Warehouse  
  
ALTER SERVER ROLE  server_role_name  ADD MEMBER login;  
  
ALTER SERVER ROLE  server_role_name  DROP MEMBER login;  

引数

server_role_name
変更するサーバー ロールの名前を指定します。

ADD MEMBER server_principal
指定されたサーバー プリンシパルをサーバー ロールに追加します。 server_principal には、ログインまたはユーザー定義サーバー ロールを指定できます。 server_principal に、固定サーバー ロール、データベース ロール、または sa を指定することはできません。

DROP MEMBER server_principal
指定されたサーバー プリンシパルをサーバー ロールから削除します。 server_principal には、ログインまたはユーザー定義サーバー ロールを指定できます。 server_principal に、固定サーバー ロール、データベース ロール、または sa を指定することはできません。

WITH NAME =new_server_role_name
ユーザー定義サーバー ロールの新しい名前を指定します。 サーバー内に存在しない名前を指定してください。

注釈

ユーザー定義サーバー ロールの名前を変更しても、ロールの ID 番号、所有者、権限は変わりません。

ロールのメンバーシップの変更では、ALTER SERVER ROLE は sp_addsrvrolemember と sp_dropsrvrolemember を置き換えます。 これらのストアド プロシージャは非推奨です。

サーバー ロールを確認するには、sys.server_role_members カタログ ビューおよび sys.server_principals カタログ ビューに対してクエリを実行します。

ユーザー定義サーバー ロールの所有者を変更するには、ALTER AUTHORIZATION (Transact-SQL) を使用します。

アクセス許可

ユーザー定義サーバー ロールの名前を変更するには、サーバーに対する ALTER ANY SERVER ROLE 権限が必要です。

固定サーバー ロール

固定サーバー ロールにメンバーを追加するには、その固定サーバー ロールのメンバーであるか、sysadmin 固定サーバー ロールのメンバーである必要があります。

Note

CONTROL SERVER 権限と ALTER ANY SERVER ROLE 権限では、固定サーバー ロールに対して ALTER SERVER ROLE を実行することはできません。また、ALTER 権限は固定サーバー ロールに対して許可できません。

ユーザー定義サーバー ロール

ユーザー定義サーバー ロールにメンバーを追加するには、sysadmin 固定サーバー ロールのメンバーであるか、CONTROL SERVER または ALTER ANY SERVER ROLE 権限を持っている必要があります。 または、そのロールに対する ALTER 権限を持っている必要があります。

Note

固定サーバー ロールとは異なり、ユーザー定義サーバー ロールのメンバーには、同じロールにメンバーを追加する権限がもともとありません。

A. サーバー ロールの名前を変更する

次の例では、Product という名前のサーバー ロールを作成し、そのサーバー ロールの名前を Production に変更します。

CREATE SERVER ROLE Product ;  
ALTER SERVER ROLE Product WITH NAME = Production ;  
GO  

B. ドメイン アカウントをサーバー ロールに追加する

次の例では、adventure-works\roberto0 という名前のドメイン アカウントを Production という名前のユーザー定義サーバー ロールに追加します。

ALTER SERVER ROLE Production ADD MEMBER [adventure-works\roberto0] ;  

C. SQL Server ログインをサーバー ロールに追加する

次の例では、Ted という名前の SQL Server ログインを diskadmin 固定サーバー ロールに追加します。

ALTER SERVER ROLE diskadmin ADD MEMBER Ted ;  
GO  

D. サーバー ロールからドメイン アカウントを削除する

次の例では、Production という名前のユーザー定義サーバー ロールから adventure-works\roberto0 という名前のドメイン アカウントを削除します。

ALTER SERVER ROLE Production DROP MEMBER [adventure-works\roberto0] ;  

E. サーバー ロールから SQL Server ログインを削除する

次の例では、diskadmin 固定サーバー ロールから Ted という名前の SQL Server ログインを削除します。

ALTER SERVER ROLE Production DROP MEMBER Ted ;  
GO  

F. ログインをユーザー定義サーバー ロールに追加する権限をログインに許可する

次の例では、Ted が他のログインを Production という名前のユーザー定義サーバー ロールに追加できるようにします。

GRANT ALTER ON SERVER ROLE::Production TO Ted ;  
GO  

G. ロールのメンバーシップを表示するには

ロールのメンバーシップを表示するには、SQL Server Management Studio の [サーバー ロール (メンバー)] ページを使用するか、次のクエリを実行します。

SELECT SRM.role_principal_id, SP.name AS Role_Name,   
SRM.member_principal_id, SP2.name  AS Member_Name  
FROM sys.server_role_members AS SRM  
JOIN sys.server_principals AS SP  
    ON SRM.Role_principal_id = SP.principal_id  
JOIN sys.server_principals AS SP2   
    ON SRM.member_principal_id = SP2.principal_id  
ORDER BY  SP.name,  SP2.name  

例: Analytics Platform System (PDW)

H. 基本構文

次の例では、ログイン Anna をサーバー ロール LargeRC に追加します。

ALTER SERVER ROLE LargeRC ADD MEMBER Anna;  

I. リソース クラスからログインを削除する。

次の例では、サーバー ロール LargeRC から Anna のメンバーシップを削除します。

ALTER SERVER ROLE LargeRC DROP MEMBER Anna;  

参照

CREATE SERVER ROLE (Transact-SQL)
DROP SERVER ROLE (Transact-SQL)
CREATE ROLE (Transact-SQL)
ALTER ROLE (Transact-SQL)
DROP ROLE (Transact-SQL)
セキュリティ ストアド プロシージャ (Transact-SQL)
セキュリティ関数 (Transact-SQL)
プリンシパル (データベース エンジン)
sys.server_role_members (Transact-SQL)
sys.server_principals (Transact-SQL)