ALTER ROLE (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

データベース ロールのメンバーを追加または削除するか、ユーザー定義のデータベース ロールの名前を変更します。

注意

Azure Synapse Analytics および Analytics Platform System (PDW) でロールのメンバーを追加したり削除したりするには、sp_addrolemember (Transact-SQL)sp_droprolemember (Transact-SQL) を使用します。

Transact-SQL 構文表記規則

構文

SQL Server (2012 以降)、Azure SQL Managed Instance、Azure SQL Database、および Microsoft Fabric の構文。

ALTER ROLE  role_name  
{  
       ADD MEMBER database_principal  
    |  DROP MEMBER database_principal  
    |  WITH NAME = new_name  
}  
[;]  

SQL Server (2012 よりも前) の構文。

-- Change the name of a user-defined database role  
ALTER ROLE role_name   
    WITH NAME = new_name  
[;]  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

role_name
適用対象: SQL Server (2008 以降)、Azure SQL Database、Azure SQL Managed Instance

変更するデータベース ロールを指定します。

ADD MEMBER database_principal
適用対象: SQL Server (2012 以降)、Azure SQL Database、Azure SQL Managed Instance

データベース ロールのメンバーシップにデータベース プリンシパルを追加することを指定します。

  • database_principal はデータベース ユーザーまたはユーザー定義データベース ロールです。

  • database_principal には固定データベース ロールまたはサーバー プリンシパルは指定できません。

DROP MEMBER database_principal
適用対象: SQL Server (2012 以降)、Azure SQL Database、Azure SQL Managed Instance

データベース ロールのメンバーシップからデータベース プリンシパルを削除することを指定します。

  • database_principal はデータベース ユーザーまたはユーザー定義データベース ロールです。

  • database_principal には固定データベース ロールまたはサーバー プリンシパルは指定できません。

WITH NAME = new_name
適用対象: SQL Server (2008 以降)、Azure SQL Database、Azure SQL Managed Instance

ユーザー定義データベース ロールの名前を変更することを指定します。 データベース内に存在しない新しい名前を指定してください。

データベース ロールの名前を変更しても、ロールの ID 番号、所有者、権限は変わりません。

アクセス許可

このコマンドを実行するには、以下の権限またはメンバーシップの 1 つ以上が必要です。

  • ロールに対する ALTER 権限
  • データベースに対する ALTER ANY ROLE 権限
  • db_securityadmin 固定データベース ロールのメンバーシップ

また、固定データベース ロールのメンバーシップを変更するには以下が必要です。

  • db_owner 固定データベース ロールのメンバーシップ

制限事項と制約事項

固定データベース ロールの名前は変更できません。

メタデータ

これらのシステム ビューには、データベース ロールとデータベース プリンシパルに関する情報が格納されます。

A. データベース ロールの名前の変更

適用対象: SQL Server (2008 以降)、Azure SQL Database、Azure SQL Managed Instance

次の例では、ロール buyers の名前を purchasing に変更します。 この例では、AdventureWorks サンプル データベースで実行できます。

ALTER ROLE buyers WITH NAME = purchasing;  

B. ロール メンバーの追加または削除

適用対象: SQL Server (2012 以降)、Azure SQL Database、Azure SQL Managed Instance

この例では、Sales という名前のデータベース ロールを作成します。 メンバーシップに Barry という名前のデータベース ユーザーを追加してから、メンバー Barry を削除する方法を示します。 この例では、AdventureWorks サンプル データベースで実行できます。

CREATE ROLE Sales;  
ALTER ROLE Sales ADD MEMBER Barry;  
ALTER ROLE Sales DROP MEMBER Barry;  

C. Azure SQL Database の特別なロールへのロール メンバーの追加

適用対象: Azure SQL Database

この例では、仮想 master データベースでの SQL ログインの作成、そのサーバー ログインに関連するデータベース ユーザーの作成、特別なロール dbmanager のメンバーとしてのデータベース ユーザーの追加を行います。 この例を使用すると、ユーザーは、Azure SQL Database 論理サーバー上で、データベースの作成とドロップを行うことができます。 Azure SQL Database 論理サーバーの仮想 master データベースで、この例を実行します。

 CREATE LOGIN sqllogin_nlastname WITH password='aah3%#om1os';
    
 CREATE USER sqllogin_nlastname FOR LOGIN sqllogin_nlastname 
 WITH DEFAULT_SCHEMA = master;
    
 ALTER ROLE [dbmanager] add member sqllogin_nlastname;

参照

CREATE ROLE (Transact-SQL)
プリンシパル (データベース エンジン)
DROP ROLE (Transact-SQL)
sp_addrolemember (Transact-SQL)
sys.database_role_members (Transact-SQL)
sys.database_principals (Transact-SQL)