ALTER APPLICATION ROLE (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

アプリケーション ロールの名前、パスワード、または既定のスキーマを変更します。

Transact-SQL 構文表記規則

構文

  
ALTER APPLICATION ROLE application_role_name
    WITH <set_item> [ ,...n ]  
  
<set_item> ::=
    NAME = new_application_role_name
    | PASSWORD = 'password'  
    | DEFAULT_SCHEMA = schema_name  

Note

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

引数

application_role_name
変更するアプリケーション ロールの名前です。

NAME =new_application_role_name
アプリケーション ロールの新しい名前を指定します。 この名前は、データベース内のどのプリンシパルへの参照にも使用されていない名前である必要があります。

PASSWORD ='password'
アプリケーション ロールのパスワードを指定します。 password は、Windows のパスワード ポリシーが SQL Server のインスタンスを実行するコンピューターに要求する条件を満足する必要があります。 複雑なパスワードの使用をお勧めします。

DEFAULT_SCHEMA =schema_name
オブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマを指定します。 schema_name にはデータベースに存在しないスキーマを指定できます。

解説

新しいアプリケーション ロールの名前が既にデータベースに存在する場合、このステートメントは失敗します。 アプリケーション ロールの名前、パスワード、または既定のスキーマが変更されても、そのロールに関連付けられている ID は変更されません。

重要

パスワードの有効期限ポリシーは、アプリケーション ロールのパスワードには適用されません。 このため、複雑なパスワードを選択する際には十分注意してください。 アプリケーション ロールを呼び出すアプリケーションは、これらのパスワードを格納する必要があります。

アプリケーション ロールは、sys.database_principals カタログ ビューで参照できます。

注意事項

SQL Server 2005 (9.x) でのスキーマの動作は、以前のバージョンの SQL Server での動作から変更されました。 コードで、スキーマがデータベース ユーザーと同じであることが前提となっている場合、正しい結果が返されない場合があります。 以下の DDL ステートメントが使用されているデータベースでは、sysobjects などの古いカタログ ビューを使用してはいけません:CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、CREATE USER、ALTER USER、DROP USER、CREATE ROLE、ALTER ROLE、DROP ROLE、CREATE APPROLE、ALTER APPROLE、DROP APPROLE、ALTER AUTHORIZATION。 これらのいずれかのステートメントが使用されたデータベースでは、新しいカタログ ビューを使用する必要があります。 新しいカタログ ビューでは、SQL Server 2005 (9.x) で導入されたプリンシパルとスキーマの分離が考慮されます。 カタログ ビューの詳細については、「カタログ ビュー (Transact-SQL)」を参照してください。

アクセス許可

データベースに対する ALTER ANY APPLICATION ROLE 権限が必要です。 既定のスキーマを変更するには、アプリケーション ロールに対する ALTER 権限も必要です。 アプリケーション ロールは、それ自体の既定のスキーマを変更できますが、名前とパスワードは変更できません。

A. アプリケーション ロールの名前を変更する

次の例では、アプリケーション ロール weekly_receipts の名前を receipts_ledger に変更します。

USE AdventureWorks2022;  
CREATE APPLICATION ROLE weekly_receipts   
    WITH PASSWORD = '987Gbv8$76sPYY5m23' ,   
    DEFAULT_SCHEMA = Sales;  
GO  
ALTER APPLICATION ROLE weekly_receipts   
    WITH NAME = receipts_ledger;  
GO  

B. アプリケーション ロールのパスワードを変更する

次の例では、アプリケーション ロール receipts_ledger のパスワードを変更します。

ALTER APPLICATION ROLE receipts_ledger   
    WITH PASSWORD = '897yUUbv867y$200nk2i';  
GO  

C. 名前、パスワード、および既定のスキーマを変更する

次の例では、アプリケーション ロール receipts_ledger の名前、パスワード、および既定のスキーマをすべて同時に変更します。

ALTER APPLICATION ROLE receipts_ledger   
    WITH NAME = weekly_ledger,   
    PASSWORD = '897yUUbv77bsrEE00nk2i',   
    DEFAULT_SCHEMA = Production;  
GO  

参照

アプリケーション ロール
CREATE APPLICATION ROLE (Transact-SQL)
DROP APPLICATION ROLE (Transact-SQL)
EVENTDATA (Transact-SQL)