ALTER USER (Transact-SQL)

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

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

構文

 ALTER USER user_name        WITH <set_item> [ ,...n ] <set_item> ::=       NAME = new_user_name       | DEFAULT_SCHEMA = schema_name      | LOGIN = login_name

引数

  • user_name
    データベース内でユーザーを識別する名前を指定します。
  • LOGIN **=**login_name
    ユーザーのセキュリティ識別子 (SID) をログインの SID に一致するように変更することで、ユーザーを別のログインに再マップします。
  • NAME **=**new_user_name
    このユーザーの新しい名前を指定します。new_user_name は現在のデータベースに存在しない名前にする必要があります。
  • DEFAULT_SCHEMA **=**schema_name
    このユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマを指定します。

解説

DEFAULT_SCHEMA が定義されていない場合、ユーザーには既定のスキーマとして dbo が使用されます。DEFAULT_SCHEMA には、データベースに現在存在しないスキーマも設定できます。したがって、スキーマが作成される前に DEFAULT_SCHEMA をユーザーに割り当てることができます。Windows グループ、証明書、非対称キーにマップされているユーザーに対して DEFAULT_SCHEMA を指定することはできません。

ms176060.note(ja-jp,SQL.90).gif重要 :
ユーザーが固定サーバー ロール sysadmin のメンバである場合、DEFAULT_SCHEMA の値は無視されます。固定サーバー ロール sysadmin のすべてのメンバには、dbo の既定のスキーマが割り当てられます。

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

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

ユーザーが Windows ユーザーであるか、ユーザー名が (円記号を含む) Windows 名である場合、または新しいユーザー名が指定されておらず、現在のユーザー名がログイン名と異なる場合は、ユーザー名がログイン名に自動的に変更されます。それ以外の場合は、呼び出し元が NAME 句を追加で呼び出さない限り、ユーザー名が変更されることはありません。

ms176060.note(ja-jp,SQL.90).gifメモ :
ALTER ANY USER 権限を与えられているユーザーは、任意のユーザーの既定のスキーマを変更できます。変更されたスキーマに属するユーザーは、知らずに間違ったテーブルからデータを検索したり、間違ったスキーマからコードを実行する可能性があります。

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

ms176060.Caution(ja-jp,SQL.90).gif注意 :
SQL Server 2005 でのスキーマの動作は、以前のバージョンの SQL Server から変更されました。コードで、スキーマがデータベース ユーザーと同じであることが前提となっている場合、正しい結果が返されない場合があります。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 権限が必要です。ユーザーは自分が所有する既定のスキーマを変更できます。

ユーザーをログインに再マップするには、データベースに対する CONTROL 権限が必要です。

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

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

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

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

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

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

参照

関連項目

CREATE USER (Transact-SQL)
DROP USER (Transact-SQL)
EVENTDATA (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手