ALTER USER (Transact-SQL)
データベース ユーザーの名前、またはデータベースの既定のスキーマを変更します。
Note
Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。
製品を選択する
次の行で、興味のある製品の名前を選択すると、その製品の情報のみが表示されます。
* SQL Server *
SQL Server
構文
-- Syntax for SQL Server
ALTER USER user_name
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
引数
user_name
データベース内でユーザーを識別する名前を指定します。
LOGIN = login_name
ユーザーのセキュリティ識別子 (SID) を別のログインの SID に一致するように変更することで、ユーザーを別のログインに再マップします。
NAME = new_user_name
このユーザーの新しい名前を指定します。 new_user_name は、現在のデータベースにまだ存在してはなりません。
DEFAULT_SCHEMA = { schema_name |NULL }
このユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマを指定します。 既定のスキーマを NULL に設定すると、既定のスキーマが Windows グループから削除されます。 Windows ユーザーでは NULL オプションは使用できません。
PASSWORD = 'password'
: SQL Server 2012 (11.x) 以降のバージョンの Azure SQL Database に適用されます。
変更するユーザーのパスワードを指定します。 パスワードでは大文字と小文字が区別されます。
Note
このオプションは、包含ユーザーに対してのみ使用できます。 詳しくは、「包含データベース」および「sp_migrate_user_to_contained (Transact-SQL)」をご覧ください。
OLD_PASSWORD = 'oldpassword'
: SQL Server 2012 (11.x) 以降のバージョンの Azure SQL Database に適用されます。
'password' で置き換える現在のユーザー パスワードです。 パスワードでは大文字と小文字が区別されます。 ALTER ANY USER 権限がない場合、パスワードを変更するには、OLD_PASSWORD が必要です。 OLD_PASSWORD を必須にすることで、IMPERSONATION 権限を持つユーザーによるパスワードの変更を防止できます。
Note
このオプションは、包含ユーザーに対してのみ使用できます。
DEFAULT_LANGUAGE ={ NONE | <lcid> | <言語名> | <言語エイリアス> }
適用対象: SQL Server 2012 (11.x) 以降のバージョン。
ユーザーに割り当てる既定の言語を指定します。 このオプションを NONE に設定した場合、既定の言語はデータベースの現在の既定の言語に設定されます。 データベースの既定の言語が後で変更された場合、ユーザーの既定の言語は変更されません。 DEFAULT_LANGUAGE には、ローカル ID (LCID)、言語の名前、または言語の別名を指定できます。
Note
このオプションは、包含データベースでのみ指定でき、包含ユーザーに対してのみ指定できます。
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON |OFF ]
: SQL Server 2016 (13.x) 以降のバージョンの Azure SQL Database に適用されます。
一括コピー操作でのサーバーの暗号化メタデータ チェックを抑制します。 これによりユーザーは、データを暗号化解除することなく、テーブルまたはデータベース間で暗号化データを一括コピーできます。 既定値は OFF です。
警告
このオプションを不適切に使用すると、データが破損する場合があります。 詳細については、「Always Encrypted を使用して暗号化されたデータを列に一括読み込みする」を参照してください。
解説
既定のスキーマは、このデータベース ユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマになります。 特に指定しない限り、このデータベース ユーザーによって作成されたオブジェクトの所有者になるのは、既定のスキーマです。
ユーザーに既定のスキーマが指定されている場合は、その既定のスキーマが使用されます。 ユーザーに既定のスキーマが指定されておらず、そのユーザーが所属しているグループに既定のスキーマが指定されている場合は、グループの既定のスキーマが使用されます。 ユーザーに既定のスキーマが指定されておらず、そのユーザーが複数のグループに所属している場合、そのユーザーの既定のスキーマは、最も小さい 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
句を使用して、Windows アカウントを SQL Server ログインに変更するなど、ユーザーの種類を変更することはできません。
SID の不一致は別のサーバーからデータベースを復元し、データベース ユーザーを SQL Server ログインにマップした場合に発生することがあります。
WITH LOGIN
句を使用すると、データベース内のユーザー SID をサーバーからのログイン SID に置き換えることで、この状況を修正できます。
次の条件を満たす場合、ユーザーの名前はログイン名に自動的に変更されます。
ユーザーが 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)」を参照してください。
セキュリティ
Note
ALTER ANY USER 権限を持つユーザーは、任意のユーザーの既定のスキーマを変更できます。 変更されたスキーマを所有するユーザーは、知らずに間違ったテーブルからデータを選択したり、間違ったスキーマからコードを実行する可能性があります。
アクセス許可
ユーザーの名前を変更するには、ALTER ANY USER 権限が必要です。
ターゲットを変更するには、ユーザーのログインにデータベースの CONTROL 権限が必要です。
データベースに対する CONTROL 権限を持つユーザーのユーザー名を変更するには、データベースに対する CONTROL 権限が必要です。
既定のスキーマまたは言語を変更するには、ユーザーに対する ALTER 権限が必要です。 ユーザーは自分が所有する既定のスキーマまたは言語を変更できます。
例
すべての例は、ユーザー データベースで実行されます。
A. データベース ユーザーの名前を変更する
次の例では、データベース ユーザー Mary5
の名前を Mary51
に変更します。
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. ユーザーの既定のスキーマを変更する
次の例では、ユーザー Mary51
の既定のスキーマを Purchasing
に変更します。
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. 一度に複数のオプションを変更する
適用対象: SQL Server 2012 (11.x) 以降のバージョン。
次の例では、包含データベース ユーザーに対する複数のオプションを 1 つのステートメントで変更します。
<new strong password here>
と <old strong password here>
を独自の値に置き換えます。
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>'
, DEFAULT_LANGUAGE= French ;
GO
D. SID の不一致を修正する
次の例では、SQL Server 認証のログインでサーバー上の SID と一致するように、データベースのユーザー SID を修正しています。
ALTER USER Mai
WITH LOGIN = Mai;
GO
関連コンテンツ
* Azure SQL Database と Microsoft Fabric *
Azure SQL Database と Microsoft Fabric
構文
Azure SQL Database の構文
-- Syntax for Azure SQL Database
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = schema_name
| LOGIN = login_name
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
[;]
-- Azure SQL Database Update Syntax
ALTER USER user_name
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
-- SQL Database syntax when connected to a federation member
ALTER USER user_name
WITH <set_item> [ ,... n ]
[;]
<set_item> ::=
NAME = new_user_name
Microsoft Fabric の SQL データベースの構文
ALTER USER
{
Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid']
}
[ ; ]
-- Users that cannot authenticate
ALTER USER user_name
{
{ FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<options_list> ::=
DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
-- SQL Database syntax when connected to a federation member
ALTER USER user_name
[;]
Microsoft Fabric Warehouse の構文
-- Syntax for Fabric Data Warehouse
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
| DEFAULT_SCHEMA = schema_name
[;]
引数
user_name
データベース内でユーザーを識別する名前を指定します。
LOGIN = login_name
ユーザーのセキュリティ識別子 (SID) を別のログインの SID に一致するように変更することで、ユーザーを別のログインに再マップします。
ALTER USER ステートメントが SQL バッチ内の唯一のステートメントである場合、Azure SQL Database では WITH LOGIN
句がサポートされます。 ALTER USER ステートメントが SQL バッチ内の唯一のステートメントではない場合、または動的 SQL で実行される場合、WITH LOGIN
句はサポートされません。
NAME = new_user_name
このユーザーの新しい名前を指定します。 new_user_name は、現在のデータベースにまだ存在してはなりません。
DEFAULT_SCHEMA = { schema_name |NULL }
このユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマを指定します。
既定のスキーマを NULL
に設定すると、Microsoft Entra ID グループ用に作成されたユーザーから既定のスキーマが削除されます。 NULL オプションは、他の種類のユーザーでは使用できません。
PASSWORD = 'password'
: Azure SQL Database に適用されます。
変更するユーザーのパスワードを指定します。 パスワードでは大文字と小文字が区別されます。
Note
このオプションは、包含ユーザーに対してのみ使用できます。 詳しくは、「包含データベース」および「sp_migrate_user_to_contained (Transact-SQL)」をご覧ください。
OLD_PASSWORD = 'oldpassword'
: Azure SQL Database に適用されます。
'password' で置き換える現在のユーザー パスワードです。 パスワードでは大文字と小文字が区別されます。 ALTER ANY USER 権限がない場合、パスワードを変更するには、OLD_PASSWORD が必要です。 OLD_PASSWORD を必須にすることで、IMPERSONATION 権限を持つユーザーによるパスワードの変更を防止できます。
Note
このオプションは、包含ユーザーに対してのみ使用できます。
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON |OFF ]
: SQL Server 2016 (13.x) 以降のバージョンの Azure SQL Database に適用されます。
一括コピー操作でのサーバーの暗号化メタデータ チェックを抑制します。 これによりユーザーは、データを暗号化解除することなく、テーブルまたはデータベース間で暗号化データを一括コピーできます。 既定値は OFF です。
警告
このオプションを不適切に使用すると、データが破損する場合があります。 詳細については、「Always Encrypted を使用して暗号化されたデータを列に一括読み込みする」を参照してください。
解説
既定のスキーマは、このデータベース ユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマになります。 特に指定しない限り、このデータベース ユーザーによって作成されたオブジェクトの所有者になるのは、既定のスキーマです。
ユーザーに既定のスキーマがある場合は、その既定のスキーマが使用されます。 ユーザーに既定のスキーマが指定されておらず、そのユーザーが所属しているグループに既定のスキーマが指定されている場合は、グループの既定のスキーマが使用されます。 ユーザーが既定のスキーマを持っていなくても、複数のグループのメンバーである場合、ユーザーの既定のスキーマは、principal_id
が最も低く、既定のスキーマが明示的に設定されたグループのスキーマになります。 ユーザーに対して既定のスキーマを特定できない場合は、dbo
スキーマが使用されます。
DEFAULT_SCHEMA には、現在データベースに存在しないスキーマも設定できます。 したがって、スキーマが作成される前に DEFAULT_SCHEMA をユーザーに割り当てることができます。
証明書または非対称キーにマップされているユーザーに対して、DEFAULT_SCHEMA を指定することはできません。
重要
ユーザーが固定サーバー ロール sysadmin のメンバーである場合、DEFAULT_SCHEMA の値は無視されます。 固定サーバー ロール sysadmin のすべてのメンバーには、dbo
の既定のスキーマが割り当てられます。
WITH LOGIN
句を使用すると、ユーザーを別のログインに再マップできます。 ログインのないユーザー、証明書にマップされているユーザー、非対称キーにマップされているユーザーを、この句を使って再マップすることはできません。 再マップできるのは SQL ユーザーだけです。
WITH LOGIN
句を使用してユーザーの種類を変更することはできません。
次の条件を満たす場合、ユーザーの名前はログイン名に自動的に変更されます。
新しい名前が指定されていない。
現在の名前がログイン名とは異なる。
それ以外の場合、呼び出し元が追加で 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)」を参照してください。
Fabric SQL データベース
詳細については、以下を参照してください。
Fabric Warehouse
Microsoft Fabric Warehouse では、ALTER USER は既定のスキーマのみを設定するように制限されています。 SQL または他の製品の ALTER USER に一般的に関連付けられている他の引数はサポートされていないため、エラーが返されます。
Microsoft Fabric Warehouse では、照合順序名では大文字と小文字が区別されます。
既定のスキーマは、このデータベース ユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマになります。 特に指定しない限り、このデータベース ユーザーによって作成されたオブジェクトの所有者になるのは、既定のスキーマです。
ユーザーに既定のスキーマがある場合は、そのスキーマが使用されます。 既定のスキーマが指定されていない場合は、dbo スキーマが適用されます。 データベース エンジンはまず、ユーザーの既定のスキーマ内のオブジェクトの解決を試みます。 一致するオブジェクトが見つからない場合は、dbo スキーマを確認します。
DEFAULT_SCHEMAは、データベースに現在存在しないスキーマに設定できます。 したがって、スキーマが作成される前に DEFAULT_SCHEMA をユーザーに割り当てることができます。
詳細については、以下を参照してください。
- Fabric Warehouse で SQL の詳細なアクセス許可を する
- Microsoft Fabric のデータ ウェアハウスのセキュリティ
セキュリティ
Note
ALTER ANY USER 権限を持つユーザーは、任意のユーザーの既定のスキーマを変更できます。 変更されたスキーマを所有するユーザーは、知らずに間違ったテーブルからデータを選択したり、間違ったスキーマからコードを実行する可能性があります。
アクセス許可
ユーザーの名前を変更するには、ALTER ANY USER 権限が必要です。
ターゲットを変更するには、ユーザーのログインにデータベースの CONTROL 権限が必要です。
データベースに対する CONTROL 権限を持つユーザーのユーザー名を変更するには、データベースに対する CONTROL 権限が必要です。
既定のスキーマまたは言語を変更するには、ユーザーに対する ALTER 権限が必要です。 ユーザーは自分が所有する既定のスキーマまたは言語を変更できます。
Fabric Warehouse ロールのアクセス許可
ワークスペースの共同作成者ロール メンバーシップが少なくとも 1 人のユーザーは、Fabric Data Warehouse 上の任意のユーザーの既定のスキーマを変更できます。
ワークスペースの VIEWER ロール メンバーシップを持つユーザーは、昇格されたアクセス権を持つユーザーがこのアクセス許可を付与しない限り、独自の既定のスキーマを変更できません。
ワークスペース レベルで VIEWER ロールに含まれるユーザーには、他のユーザーの既定のスキーマを変更するための ALTER ANY USER アクセス許可が必要です。
例
すべての例は、ユーザー データベースで実行されます。
A. データベース ユーザーの名前を変更する
次の例では、データベース ユーザー Mary5
の名前を Mary51
に変更します。
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. ユーザーの既定のスキーマを変更する
次の例では、ユーザー Mary51
の既定のスキーマを Purchasing
に変更します。
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. 一度に複数のオプションを変更する
次の例では、包含データベース ユーザーに対する複数のオプションを 1 つのステートメントで変更します。
<new strong password here>
と <old strong password here>
を独自の値に置き換えます。
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>';
GO
D. ユーザーの既定のスキーマを変更する
次の例では、ユーザー Mary51
の既定のスキーマを Purchasing
に変更します。
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
関連コンテンツ
- CREATE USER (Transact-SQL)
- DROP USER (Transact-SQL)
- 包含データベース
- sp_migrate_user_to_contained (Transact-SQL)
- Microsoft Fabric Data Warehouse の テーブル
- Microsoft Fabric SQL データベース での認証の
* SQL Managed Instance *
Azure SQL Managed Instance
構文
重要
Microsoft Entra ログインを使用してユーザーに適用する場合、Azure SQL Managed Instance では次のオプションのみがサポートされます。 DEFAULT_SCHEMA = { schema_name | NULL }
と DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
Azure SQL Managed Instance に移行されたデータベース内のユーザーの再マップに役立つ新しい構文拡張機能が追加されました。 ALTER USER 構文は、Microsoft Entra ID を使用してフェデレーションおよび同期されたドメイン内のデータベース ユーザーを Microsoft Entra ログインにマップするのに役立ちます。
-- Syntax for SQL Managed Instance
ALTER USER user_name
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
-- Users or groups that are migrated as federated and synchronized with Azure AD have the following syntax:
/** Applies to Windows users that were migrated and have the following user names:
- Windows user <domain\user>
- Windows group <domain\MyWindowsGroup>
- Windows alias <MyWindowsAlias>
**/
ALTER USER user_name
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
引数
user_name
データベース内でユーザーを識別する名前を指定します。
LOGIN = login_name
ユーザーのセキュリティ識別子 (SID) を別のログインの SID に一致するように変更することで、ユーザーを別のログインに再マップします。
ALTER USER ステートメントが SQL バッチ内の唯一のステートメントである場合、Azure SQL Database では WITH LOGIN
句がサポートされます。 ALTER USER ステートメントが SQL バッチ内の唯一のステートメントではない場合、または動的 SQL で実行される場合、WITH LOGIN
句はサポートされません。
NAME = new_user_name
このユーザーの新しい名前を指定します。 new_user_name は、現在のデータベースにまだ存在してはなりません。
DEFAULT_SCHEMA = { schema_name |NULL }
このユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマを指定します。 既定のスキーマを NULL に設定すると、既定のスキーマが Windows グループから削除されます。 Windows ユーザーでは、NULL オプションは使用できません。
PASSWORD = 'password'
変更するユーザーのパスワードを指定します。 パスワードでは大文字と小文字が区別されます。
Note
このオプションは、包含ユーザーに対してのみ使用できます。 詳しくは、「包含データベース」および「sp_migrate_user_to_contained (Transact-SQL)」をご覧ください。
OLD_PASSWORD = 'oldpassword'
'password' で置き換える現在のユーザー パスワードです。 パスワードでは大文字と小文字が区別されます。 ALTER ANY USER 権限がない場合、パスワードを変更するには、OLD_PASSWORD が必要です。 OLD_PASSWORD を必須にすることで、IMPERSONATION 権限を持つユーザーによるパスワードの変更を防止できます。
Note
このオプションは、包含ユーザーに対してのみ使用できます。
DEFAULT_LANGUAGE ={ NONE | <lcid> | <言語名> | <言語エイリアス> }
ユーザーに割り当てる既定の言語を指定します。 このオプションを NONE に設定した場合、既定の言語はデータベースの現在の既定の言語に設定されます。 データベースの既定の言語が将来変更されても、ユーザーの既定の言語は変更されません。 DEFAULT_LANGUAGE には、ローカル ID (LCID)、言語の名前、または言語の別名を指定できます。
Note
このオプションは、包含データベースでのみ指定でき、包含ユーザーに対してのみ指定できます。
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON |OFF ]
一括コピー操作でのサーバーの暗号化メタデータ チェックを抑制します。 これによりユーザーは、データを暗号化解除することなく、テーブルまたはデータベース間で暗号化データを一括コピーできます。 既定値は OFF です。
警告
このオプションを不適切に使用すると、データが破損する場合があります。 詳細については、「Always Encrypted を使用して暗号化されたデータを列に一括読み込みする」を参照してください。
解説
既定のスキーマは、このデータベース ユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマになります。 特に指定しない限り、このデータベース ユーザーによって作成されたオブジェクトの所有者になるのは、既定のスキーマです。
ユーザーに既定のスキーマがある場合は、その既定のスキーマが使用されます。 ユーザーに既定のスキーマが指定されておらず、そのユーザーが所属しているグループに既定のスキーマが指定されている場合は、グループの既定のスキーマが使用されます。 ユーザーに既定のスキーマが指定されておらず、そのユーザーが複数のグループに所属している場合、そのユーザーの既定のスキーマは、最も小さい 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
句を使用して、Windows アカウントを SQL Server ログインに変更するなど、ユーザーの種類を変更することはできません。 唯一の例外は、Windows ユーザーを Microsoft Entra ユーザーに変更する場合です。
Note
以下の規則は、Azure SQL Managed Instance 上の Windows ユーザーには適用されません。Azure SQL Managed Instance での Windows ログインの作成はサポートされていないためです。 WITH LOGIN オプションは、Microsoft Entra ログインが存在する場合にのみ使用できます。
次の条件を満たす場合、ユーザーの名前はログイン名に自動的に変更されます。
ユーザーが 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)」を参照してください。
Azure SQL Managed Instance に移行された SQL オンプレミスの Windows ユーザーに関する解説
これらの解説は、Microsoft Entra ID とフェデレーションおよび同期された Windows ユーザーとしての認証に適用されます。
- Microsoft Entra ID にマップされている Windows ユーザーまたはグループの検証は、移行目的で使用されるすべてのバージョンの ALTER USER 構文で Graph API を使用して既定で行われます。
- 別名が設定された (元の Windows アカウントとは異なる名前を使用する) オンプレミスのユーザーは、別名が設定された名前を保持します。
- Microsoft Entra 認証の場合、LOGIN パラメーターは Azure SQL Managed Instance にのみ適用され、SQL Database では使用できません。
- Microsoft Entra プリンシパルのログインを表示するには、次のコマンドを使用します:
SELECT * FROM sys.server_principals;
. - ログインの指定された種類が
E
またはX
であることを確認します。 - PASSWORD オプションは、Microsoft Entra ユーザーには使用できません。
- すべての移行ケースで、Windows ユーザーまたはグループのロールとアクセス許可は、新しい Microsoft Entra ユーザーまたはグループに自動的に転送されます。
-
FROM EXTERNAL PROVIDER
は、Windows ユーザーとグループをオンプレミスの SQL から Microsoft Entra のユーザーとグループに変更することです。 Windows ドメインは Microsoft Entra ID とフェデレーションする必要があり、この拡張機能を使用する場合は、すべての Windows ドメイン メンバーが Microsoft Entra ID に存在する必要があります。FROM EXTERNAL PROVIDER
構文は Azure SQL Managed Instance に適用され、Windows ユーザーが元の SQL インスタンスにログインせず、スタンドアロンの Microsoft Entra データベース ユーザーにマップする必要がある場合に使用する必要があります。 - この場合、許容される
user_name
は次のようになります。 - Windows ユーザー (
domain\user
)。 - Windows グループ (
MyWindowsGroup
)。 - Windows エイリアス (
MyWindowsAlias
)。 - ALTER コマンドの結果は、古い
user_name
を、古いuser_name
の元の SID に基づいて Microsoft Entra ID で見つかった対応する名前に置き換えます。 変更された名前は置き換えられ、データベースのメタデータに格納されます。 - (
domain\user
) は Microsoft Entrauser@domain.com
に置き換えられます。 - (
domain\MyWindowsGroup
) は Microsoft Entra グループに置き換えられます。 - (
MyWindowsAlias
) は変更されませんが、このユーザーの SID は Microsoft Entra ID でチェックインされます。
Note
object_ID
に変換された元のユーザーの SID が Microsoft Entra ID テナントで見つからない場合、ALTER USER
コマンドは失敗します。
- 変更されたユーザーを表示するには、次のコマンドを使います:
SELECT * FROM sys.database_principals;
- ユーザーの指定された種類
E
またはX
を確認します。 - Windows ユーザーを Microsoft Entra ユーザーに移行するために NAME を使用する場合は、次の制限が適用されます。
- 有効な LOGIN を指定する必要があります。
- NAME は Microsoft Entra ID テナントでチェックされ、次の場合にのみ使用できます。
- LOGIN の名前。
- エイリアス - 名前は Microsoft Entra ID に存在できません。
- それ以外の場合は、構文が失敗します。
セキュリティ
Note
ALTER ANY USER 権限を持つユーザーは、任意のユーザーの既定のスキーマを変更できます。 変更されたスキーマを所有するユーザーは、知らずに間違ったテーブルからデータを選択したり、間違ったスキーマからコードを実行する可能性があります。
アクセス許可
ユーザーの名前を変更するには、ALTER ANY USER 権限が必要です。
ターゲットを変更するには、ユーザーのログインにデータベースの CONTROL 権限が必要です。
データベースに対する CONTROL 権限を持つユーザーのユーザー名を変更するには、データベースに対する CONTROL 権限が必要です。
既定のスキーマまたは言語を変更するには、ユーザーに対する ALTER 権限が必要です。 ユーザーは自分が所有する既定のスキーマまたは言語を変更できます。
例
すべての例は、ユーザー データベースで実行されます。
A. データベース ユーザーの名前を変更する
次の例では、データベース ユーザー Mary5
の名前を Mary51
に変更します。
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. ユーザーの既定のスキーマを変更する
次の例では、ユーザー Mary51
の既定のスキーマを Purchasing
に変更します。
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. 一度に複数のオプションを変更する
次の例では、包含データベース ユーザーに対する複数のオプションを 1 つのステートメントで変更します。
<new strong password here>
と <old strong password here>
を独自の値に置き換えます。
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>'
, DEFAULT_LANGUAGE= French ;
GO
D. 移行後にデータベース内のユーザーを Microsoft Entra ログインにマップする
次の例では、ユーザーを再マップし、Microsoft Entra ユーザーにwestus/joe
joe@westus.com
します。 この例は、マネージド インスタンスに既に存在しているログインを対象としています。 これは、Azure SQL Managed Instance へのデータベース移行を完了し、Microsoft Entra ログインを使用して認証を行う場合に実行する必要があります。
ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com]
E. Azure SQL Managed Instance にログインせずにデータベース内の古い Windows ユーザーを Microsoft Entra ユーザーにマップする
次の例では、ログインなしで westus/joe
ユーザーを Microsoft Entra ユーザー ( joe@westus.com
) に再マップします。 フェデレーション ユーザーは Microsoft Entra ID に存在する必要があります。
ALTER USER [westus/joe] FROM EXTERNAL PROVIDER
F. ユーザー エイリアスを既存の Microsoft Entra ログインにマップする
次の例では、ユーザー名 westus\joe
が joe_alias
に再マップされます。 この場合、対応する Microsoft Entra ログインは joe@westus.com
。
ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com], name= joe_alias
G. Azure SQL Managed Instance で移行された Windows グループを Microsoft Entra グループにマップする
次の例では、マネージド インスタンス内の Microsoft Entra グループ westus\mygroup
にmygroup
、古いオンプレミス グループを再マップします。 グループは Microsoft Entra ID に存在する必要があります。
ALTER USER [westus\mygroup] WITH LOGIN = mygroup;
関連コンテンツ
* Azure Synapse
Analytics *
Azure Synapse Analytics
構文
-- Syntax for Azure Synapse
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| LOGIN = login_name
| DEFAULT_SCHEMA = schema_name
[;]
引数
user_name
データベース内でユーザーを識別する名前を指定します。
LOGIN = login_name
ユーザーのセキュリティ識別子 (SID) を別のログインの SID に一致するように変更することで、ユーザーを別のログインに再マップします。
ALTER USER ステートメントが SQL バッチ内の唯一のステートメントである場合、Azure SQL Database では WITH LOGIN
句がサポートされます。 ALTER USER ステートメントが SQL バッチ内の唯一のステートメントではない場合、または動的 SQL で実行される場合、WITH LOGIN
句はサポートされません。
NAME = new_user_name
このユーザーの新しい名前を指定します。 new_user_name は、現在のデータベースにまだ存在してはなりません。
DEFAULT_SCHEMA = { schema_name |NULL }
このユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマを指定します。 既定のスキーマを NULL に設定すると、既定のスキーマが Windows グループから削除されます。 Windows ユーザーでは、NULL オプションは使用できません。
解説
既定のスキーマは、このデータベース ユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマになります。 特に指定しない限り、このデータベース ユーザーによって作成されたオブジェクトの所有者になるのは、既定のスキーマです。
ユーザーに既定のスキーマがある場合は、その既定のスキーマが使用されます。 ユーザーに既定のスキーマが指定されておらず、そのユーザーが所属しているグループに既定のスキーマが指定されている場合は、グループの既定のスキーマが使用されます。 ユーザーに既定のスキーマが指定されておらず、そのユーザーが複数のグループに所属している場合、そのユーザーの既定のスキーマは、最も小さい principle_id と明示的に設定された既定のスキーマを持つ Windows グループのスキーマになります。 ユーザーに対して既定のスキーマを特定できない場合は、dbo
スキーマが使用されます。
DEFAULT_SCHEMA には、現在データベースに存在しないスキーマも設定できます。 したがって、スキーマが作成される前に DEFAULT_SCHEMA をユーザーに割り当てることができます。
証明書または非対称キーにマップされているユーザーに対して、DEFAULT_SCHEMA を指定することはできません。
重要
ユーザーが固定サーバー ロール sysadmin のメンバーである場合、DEFAULT_SCHEMA の値は無視されます。 固定サーバー ロール sysadmin のすべてのメンバーには、dbo
の既定のスキーマが割り当てられます。
WITH LOGIN
句を使用すると、ユーザーを別のログインに再マップできます。 ログインのないユーザー、証明書にマップされているユーザー、非対称キーにマップされているユーザーを、この句を使って再マップすることはできません。 SQL ユーザーおよび Windows ユーザー (またはグループ) のみ再マップできます。
WITH LOGIN
句を使用して、Windows アカウントを SQL Server ログインに変更するなど、ユーザーの種類を変更することはできません。
次の条件を満たす場合、ユーザーの名前はログイン名に自動的に変更されます。
新しい名前が指定されていない。
現在の名前がログイン名とは異なる。
それ以外の場合、呼び出し元が追加で 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)」を参照してください。
セキュリティ
Note
ALTER ANY USER 権限を持つユーザーは、任意のユーザーの既定のスキーマを変更できます。 変更されたスキーマを所有するユーザーは、知らずに間違ったテーブルからデータを選択したり、間違ったスキーマからコードを実行する可能性があります。
アクセス許可
ユーザーの名前を変更するには、ALTER ANY USER 権限が必要です。
ターゲットを変更するには、ユーザーのログインにデータベースの CONTROL 権限が必要です。
データベースに対する CONTROL 権限を持つユーザーのユーザー名を変更するには、データベースに対する CONTROL 権限が必要です。
既定のスキーマまたは言語を変更するには、ユーザーに対する ALTER 権限が必要です。 ユーザーは自分が所有する既定のスキーマまたは言語を変更できます。
例
すべての例は、ユーザー データベースで実行されます。
A. データベース ユーザーの名前を変更する
次の例では、データベース ユーザー Mary5
の名前を Mary51
に変更します。
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. ユーザーの既定のスキーマを変更する
次の例では、ユーザー Mary51
の既定のスキーマを Purchasing
に変更します。
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
関連コンテンツ
* Analytics
Platform System (PDW) *
分析プラットフォーム システム
構文
-- Syntax for Analytics Platform System
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| LOGIN = login_name
| DEFAULT_SCHEMA = schema_name
[;]
引数
user_name
データベース内でユーザーを識別する名前を指定します。
LOGIN = login_name
ユーザーのセキュリティ識別子 (SID) を別のログインの SID に一致するように変更することで、ユーザーを別のログインに再マップします。
ALTER USER ステートメントが SQL バッチ内の唯一のステートメントである場合、Azure SQL Database では WITH LOGIN
句がサポートされます。 ALTER USER ステートメントが SQL バッチ内の唯一のステートメントではない場合、または動的 SQL で実行される場合、WITH LOGIN
句はサポートされません。
NAME = new_user_name
このユーザーの新しい名前を指定します。 new_user_name は、現在のデータベースにまだ存在してはなりません。
DEFAULT_SCHEMA = { schema_name |NULL }
このユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマを指定します。 既定のスキーマを NULL に設定すると、既定のスキーマが Windows グループから削除されます。 Windows ユーザーでは、NULL オプションは使用できません。
解説
既定のスキーマは、このデータベース ユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマになります。 特に指定しない限り、このデータベース ユーザーによって作成されたオブジェクトの所有者になるのは、既定のスキーマです。
ユーザーに既定のスキーマがある場合は、その既定のスキーマが使用されます。 ユーザーに既定のスキーマが指定されておらず、そのユーザーが所属しているグループに既定のスキーマが指定されている場合は、グループの既定のスキーマが使用されます。 ユーザーに既定のスキーマが指定されておらず、そのユーザーが複数のグループに所属している場合、そのユーザーの既定のスキーマは、最も小さい principle_id と明示的に設定された既定のスキーマを持つ Windows グループのスキーマになります。 ユーザーに対して既定のスキーマを特定できない場合は、dbo
スキーマが使用されます。
DEFAULT_SCHEMA には、現在データベースに存在しないスキーマも設定できます。 したがって、スキーマが作成される前に DEFAULT_SCHEMA をユーザーに割り当てることができます。
証明書または非対称キーにマップされているユーザーに対して、DEFAULT_SCHEMA を指定することはできません。
重要
ユーザーが固定サーバー ロール sysadmin のメンバーである場合、DEFAULT_SCHEMA の値は無視されます。 固定サーバー ロール sysadmin のすべてのメンバーには、dbo
の既定のスキーマが割り当てられます。
WITH LOGIN
句を使用すると、ユーザーを別のログインに再マップできます。 ログインのないユーザー、証明書にマップされているユーザー、非対称キーにマップされているユーザーを、この句を使って再マップすることはできません。 SQL ユーザーおよび Windows ユーザー (またはグループ) のみ再マップできます。
WITH LOGIN
句を使用して、Windows アカウントを SQL Server ログインに変更するなど、ユーザーの種類を変更することはできません。
次の条件を満たす場合、ユーザーの名前はログイン名に自動的に変更されます。
新しい名前が指定されていない。
現在の名前がログイン名とは異なる。
それ以外の場合、呼び出し元が追加で 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)」を参照してください。
セキュリティ
Note
ALTER ANY USER 権限を持つユーザーは、任意のユーザーの既定のスキーマを変更できます。 変更されたスキーマを所有するユーザーは、知らずに間違ったテーブルからデータを選択したり、間違ったスキーマからコードを実行する可能性があります。
アクセス許可
ユーザーの名前を変更するには、ALTER ANY USER 権限が必要です。
ターゲットを変更するには、ユーザーのログインにデータベースの CONTROL 権限が必要です。
データベースに対する CONTROL 権限を持つユーザーのユーザー名を変更するには、データベースに対する CONTROL 権限が必要です。
既定のスキーマまたは言語を変更するには、ユーザーに対する ALTER 権限が必要です。 ユーザーは自分が所有する既定のスキーマまたは言語を変更できます。
例
すべての例は、ユーザー データベースで実行されます。
A. データベース ユーザーの名前を変更する
次の例では、データベース ユーザー Mary5
の名前を Mary51
に変更します。
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. ユーザーの既定のスキーマを変更する
次の例では、ユーザー Mary51
の既定のスキーマを Purchasing
に変更します。
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO