ALTER SERVER ROLE (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Analytics Platform System (PDW)
サーバー ロールのメンバーシップを変更、またはユーザー定義のサーバー ロールの名前を変更します。 固定サーバー ロールの名前は変更できません。
構文
-- Syntax for SQL Server, Azure SQL Database, Azure SQL Managed Instance
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) を使用します。
Azure SQL Database では、ALTER SERVER ROLE
は master
データベースで実行する必要があります。
アクセス許可
ユーザー定義サーバー ロールの名前を変更するには、サーバーに対する 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;