ALTER USER (Transact-SQL)
データベース ユーザーの名前、またはデータベースの既定のスキーマを変更します。
構文
ALTER USER userName
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = schemaName
| LOGIN = loginName
引数
userName
データベース内でユーザーを識別する名前を指定します。LOGIN =loginName
ユーザーのセキュリティ識別子 (SID) を別のログインの SID に一致するように変更することで、ユーザーを別のログインに再マップします。NAME =newUserName
このユーザーの新しい名前を指定します。newUserName は現在のデータベースに存在しない名前にする必要があります。DEFAULT_SCHEMA =schemaName
このユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマを指定します。
説明
DEFAULT_SCHEMA が定義されていない場合、ユーザーには既定のスキーマとして dbo が使用されます。DEFAULT_SCHEMA には、データベースに現在存在しないスキーマも設定できます。したがって、スキーマが作成される前に DEFAULT_SCHEMA をユーザーに割り当てることができます。Windows グループ、証明書、非対称キーにマップされているユーザーに対して DEFAULT_SCHEMA を指定することはできません。
重要 |
---|
ユーザーが固定サーバー ロール sysadmin のメンバーである場合、DEFAULT_SCHEMA の値は無視されます。固定サーバー ロール sysadmin のすべてのメンバーには、dbo の既定のスキーマが割り当てられます。 |
Windows のログインまたはグループにマップされているユーザーの名前を変更できるのは、新しいユーザー名の SID とデータベースに記録されている SID が一致する場合だけです。この条件により、データベースにおける Windows ログインのなりすましを防止できます。
WITH LOGIN 句を使用すると、ユーザーを別のログインに再マップできます。ログインのないユーザー、証明書にマップされているユーザー、非対称キーにマップされているユーザーをこの句で再マップすることはできません。SQL ユーザーおよび Windows ユーザー (またはグループ) のみ再マップできます。WITH LOGIN 句は、SQL Server ログインへの Windows アカウントの変更など、ユーザーの種類の変更には使用できません。
次の条件を満たす場合、ユーザーの名前はログイン名に自動的に変更されます。
ユーザーが Windows ユーザーである。
名前が Windows 名である (円記号を含む)。
新しい名前が指定されていない。
現在の名前がログイン名とは異なる。
それ以外の場合は、呼び出し元が NAME 句を追加で呼び出さない限り、ユーザーの名前は変更されません。
注 |
---|
ALTER ANY USER 権限を持つユーザーは、任意のユーザーの既定のスキーマを変更できます。変更されたスキーマを所有するユーザーは、知らずに間違ったテーブルからデータを選択したり、間違ったスキーマからコードを実行する可能性があります。 |
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 権限が必要です。ユーザーは自分が所有する既定のスキーマのみ変更できます。
例
A. データベース ユーザーの名前を変更する
次の例では、データベース ユーザー Mary5 の名前を Mary51 に変更します。
USE AdventureWorks2008R2;
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. ユーザーの既定のスキーマを変更する
次の例では、ユーザー Mary51 の既定のスキーマを Purchasing に変更します。
USE AdventureWorks2008R2;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO