Share via


ALTER USER (Transact-SQL)

データベース ユーザーの名前、またはデータベースの既定のスキーマを変更します。

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

構文

ALTER USER userName  
     WITH <set_item> [ ,...n ]

<set_item> ::= 
      NAME = newUserName 
    | DEFAULT_SCHEMA = { schemaName | NULL }
    | LOGIN = loginName
    | PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
    | DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }

引数

  • userName
    データベース内でユーザーを識別する名前を指定します。

  • LOGIN **=**loginName
    ユーザーのセキュリティ識別子 (SID) を別のログインの SID に一致するように変更することで、ユーザーを別のログインに再マップします。

  • NAME **=**newUserName
    このユーザーの新しい名前を指定します。 newUserName は現在のデータベースに存在しない名前にする必要があります。

  • DEFAULT_SCHEMA = { schemaName | NULL }
    このユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマを指定します。 既定のスキーマを NULL に設定すると、既定のスキーマが Windows グループから削除されます。 Windows ユーザーでは NULL オプションは使用できません。

  • PASSWORD = 'password'
    変更するユーザーのパスワードを指定します。 パスワードでは大文字と小文字が区別されます。

    注意

    このオプションは、包含ユーザーに対してのみ使用できます。 詳細については、「包含データベース」および「sp_migrate_user_to_contained (Transact-SQL)」を参照してください。

  • OLD_PASSWORD ='oldpassword'
    password で置き換える現在のユーザー パスワードです。 パスワードでは大文字と小文字が区別されます。 ALTER ANY USER 権限がない場合、パスワードを変更するには、OLD_PASSWORD が必要です。 OLD_PASSWORD を必須にすることで、IMPERSONATION 権限を持つユーザーによるパスワードの変更を防止できます。

    注意

    このオプションは、包含ユーザーに対してのみ使用できます。

  • DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }
    ユーザーに割り当てる既定の言語を指定します。 このオプションを NONE に設定した場合、既定の言語はデータベースの現在の既定の言語に設定されます。 データベースの既定の言語が将来変更されても、ユーザーの既定の言語は変更されません。 DEFAULT_LANGUAGE には、ローカル ID (LCID)、言語の名前、または言語の別名を指定できます。

    注意

    このオプションは包含データベースでのみ指定でき、また、包含ユーザーに対してのみ指定できます。

説明

既定のスキーマは、このデータベース ユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマになります。 特に指定しない限り、このデータベース ユーザーによって作成されたオブジェクトの所有者になるのは、既定のスキーマです。

ユーザーに既定のスキーマが設定されている場合は、その既定のスキーマが使用されます。 ユーザーに既定のスキーマが指定されておらず、そのユーザーが所属しているグループに既定のスキーマが指定されている場合は、グループの既定のスキーマが使用されます。 ユーザーに既定のスキーマが指定されておらず、そのユーザーが複数のグループに所属している場合、ユーザーの既定のスキーマは、最も小さい principle_id と明示的に設定された既定のスキーマを持つ Windows グループのスキーマになります。 ユーザーに対する既定のスキーマを決定できない場合は、dbo スキーマが使用されます。

DEFAULT_SCHEMA には、データベースに現在存在しないスキーマも設定できます。 したがって、スキーマが作成される前に DEFAULT_SCHEMA をユーザーに割り当てることができます。

証明書または非対称キーにマップされているユーザーに対して DEFAULT_SCHEMA を指定することはできません。

重要な注意事項重要

ユーザーが固定サーバー ロール sysadmin のメンバーである場合、DEFAULT_SCHEMA の値は無視されます。 固定サーバー ロール sysadmin のすべてのメンバーには、dbo の既定のスキーマが割り当てられます。

Windows のログインまたはグループにマップされているユーザーの名前を変更できるのは、新しいユーザー名の SID とデータベースに記録されている SID が一致する場合だけです。 この条件により、データベースにおける Windows ログインのなりすましを防止できます。

WITH LOGIN 句を使用すると、ユーザーを別のログインに再マップできます。 ログインのないユーザー、証明書にマップされているユーザー、非対称キーにマップされているユーザーをこの句で再マップすることはできません。 SQL ユーザーおよび Windows ユーザー (またはグループ) のみ再マップできます。 WITH LOGIN 句は、SQL Server ログインへの Windows アカウントの変更など、ユーザーの種類の変更には使用できません。

次の条件を満たす場合、ユーザーの名前はログイン名に自動的に変更されます。

  • ユーザーが Windows ユーザーである。

  • 名前が Windows 名である (円記号を含む)。

  • 新しい名前が指定されていない。

  • 現在の名前がログイン名とは異なる。

これらの条件を満たさない場合は、呼び出し元が NAME 句を追加で呼び出さない限り、ユーザーの名前は変更されません。

SQL Server のログイン、証明書、非対称キーにマップされているユーザーの名前には、円記号 (\) を含めることはできません。

注記注意

SQL Server 2005 からスキーマの動作が変更されました。その結果、スキーマがデータベース ユーザーと同じであると想定しているコードでは、正しい結果が返されない場合があります。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 のいずれかの DDL ステートメントが使用されたことのあるデータベースでは、sysobjects などの古いカタログ ビューを使用しないでください。そのようなデータベースでは、代わりに新しいカタログ ビューを使用してください。新しいカタログ ビューでは、SQL Server 2005 で導入されたプリンシパルとスキーマの分離が考慮されます。カタログ ビューの詳細については、「カタログ ビュー (Transact-SQL)」を参照してください。

セキュリティ

注意

ALTER ANY USER 権限を持つユーザーは、任意のユーザーの既定のスキーマを変更できます。 変更されたスキーマを所有するユーザーは、知らずに間違ったテーブルからデータを選択したり、間違ったスキーマからコードを実行する可能性があります。

権限

ユーザーの名前を変更するには、ALTER ANY USER 権限が必要です。

データベースに対する CONTROL 権限を持つユーザーのユーザー名、対象ログイン、または SID を変更するには、データベースに対する CONTROL 権限が必要です。

既定のスキーマまたは言語を変更するには、ユーザーに対する ALTER 権限が必要です。 ユーザーは自分が所有する既定のスキーマまたは言語のみ変更できます。

使用例

A. データベース ユーザーの名前を変更する

次の例では、データベース ユーザー Mary5 の名前を Mary51 に変更します。

USE AdventureWorks2012;
ALTER USER Mary5 WITH NAME = Mary51;
GO

B. ユーザーの既定のスキーマを変更する

次の例では、ユーザー Mary51 の既定のスキーマを Purchasing に変更します。

USE AdventureWorks2012;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C. 複数のオプションを一度に変更する

次の例では、包含データベース ユーザーに対する複数のオプションを 1 つのステートメントで変更します。

USE AdventureWorks2012;
GO 
ALTER USER Philip 
WITH  NAME = Philipe 
    , DEFAULT_SCHEMA = Development 
    , PASSWORD = 'W1r77TT98%ab@#’ OLD_PASSWORD = 'New Devel0per' 
    , DEFAULT_LANGUAGE  = French ;
GO

関連項目

参照

CREATE USER (Transact-SQL)

DROP USER (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_migrate_user_to_contained (Transact-SQL)

概念

包含データベース