次の方法で共有


ALTER SERVER ROLE (Transact-SQL)

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

トピック リンク アイコン Transact-SQL 構文表記規則

構文

ALTER SERVER ROLE server_role_name 
{
    [ ADD MEMBER server_principal ]
  | [ DROP MEMBER server_principal ]
  | [ WITH NAME = new_server_role_name ]
} [ ; ]

引数

  • 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 番号、所有者、権限は変わりません。

ロールのメンバーシップを変更する場合は、sp_addsrvrolemember および sp_dropsrvrolemember の代わりに ALTER SERVER ROLE を使用してください。 これらのストアド プロシージャは非推奨です。

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

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

権限

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

固定サーバー ロール

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

注意

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

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

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

注意

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

使用例

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

関連項目

参照

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)

概念

プリンシパル (データベース エンジン)