ALTER USER (Transact-SQL)ALTER USER (Transact-SQL)

適用対象: ○SQL Server (2008 以降) ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

データベース ユーザーの名前、またはデータベースの既定のスキーマを変更します。Renames a database user or changes its default schema.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

-- Syntax for SQL Server and Azure SQL Database
  
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> }  
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]  

重要

SQL Database マネージド インスタンスの Azure AD ログインはパブリック プレビュー段階です。Azure AD logins for SQL Database managed instance is in public preview. Azure AD ログインのユーザーに適用するとき、Azure SQL Database マネージド インスタンスでは、オプション DEFAULT_SCHEMA = { schemaName | NULL }DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias } のみサポートされますOnly the following options are supported for Azure SQL Database managed instance when applying to users with Azure AD logins: DEFAULT_SCHEMA = { schemaName | NULL } and DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }

-- Syntax for Azure SQL Database  
  
ALTER USER userName    
     WITH <set_item> [ ,...n ]  
  
<set_item> ::=   
      NAME = newUserName   
    | DEFAULT_SCHEMA = schemaName  
    | LOGIN = loginName  
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]   
[;]  
  
-- Azure SQL Database Update Syntax  
ALTER USER userName    
     WITH <set_item> [ ,...n ]  
[;]  
  
<set_item> ::=   
      NAME = newUserName   
    | DEFAULT_SCHEMA = { schemaName | NULL }  
    | LOGIN = loginName  
    | PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]  
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]   
  
-- SQL Database syntax when connected to a federation member  
ALTER USER userName  
     WITH <set_item> [ ,... n ]   
[;]  
  
<set_item> ::=   
     NAME = newUserName  
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  
  
ALTER USER userName    
     WITH <set_item> [ ,...n ]  
  
<set_item> ::=   
     NAME =newUserName   
     | LOGIN =loginName  
     | DEFAULT_SCHEMA = schema_name  
[;]  

引数Arguments

userNameuserName
データベース内でユーザーを識別する名前を指定します。Specifies the name by which the user is identified inside this database.

LOGIN =loginNameLOGIN =loginName
ユーザーのセキュリティ識別子 (SID) を別のログインの SID に一致するように変更することで、ユーザーを別のログインに再マップします。Re-maps a user to another login by changing the user's Security Identifier (SID) to match the login's SID.

ALTER USER ステートメントが SQL のバッチ内の唯一のステートメントである場合、Windows Azure SQL データベースでは WITH LOGIN 句がサポートされます。If the ALTER USER statement is the only statement in a SQL batch, Windows Azure SQL Database supports the WITH LOGIN clause. ALTER USER ステートメントが SQL のバッチ内の唯一のステートメントではない場合、または動的 SQL で実行されていない場合、WITH LOGIN 句はサポートされません。If the ALTER USER statement is not the only statement in a SQL batch or is executed in dynamic SQL, the WITH LOGIN clause is not supported.

NAME =newUserNameNAME =newUserName
このユーザーの新しい名前を指定します。Specifies the new name for this user. newUserName は現在のデータベースに存在しない名前にする必要があります。newUserName must not already occur in the current database.

DEFAULT_SCHEMA = { schemaName | NULL }DEFAULT_SCHEMA = { schemaName | NULL }
このユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマを指定します。Specifies the first schema that will be searched by the server when it resolves the names of objects for this user. 既定のスキーマを NULL に設定すると、既定のスキーマが Windows グループから削除されます。Setting the default schema to NULL removes a default schema from a Windows group. Windows ユーザーでは NULL オプションは使用できません。The NULL option cannot be used with a Windows user.

PASSWORD = 'password'PASSWORD = 'password'
適用対象: SQL Server 2012 (11.x)SQL Server 2012 (11.x) から SQL Server 2017SQL Server 2017SQL データベースSQL DatabaseApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017, SQL データベースSQL Database.

変更するユーザーのパスワードを指定します。Specifies the password for the user that is being changed. パスワードでは大文字と小文字が区別されます。Passwords are case-sensitive.

注意

このオプションは、包含ユーザーに対してのみ使用できます。This option is available only for contained users. 詳しくは、「包含データベースおよび「sp_migrate_user_to_contained (Transact-SQL)」をご覧ください。See Contained Databases and sp_migrate_user_to_contained (Transact-SQL) for more information.

OLD_PASSWORD ='oldpassword'OLD_PASSWORD ='oldpassword'
適用対象: SQL Server 2012 (11.x)SQL Server 2012 (11.x) から SQL Server 2017SQL Server 2017SQL データベースSQL DatabaseApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017, SQL データベースSQL Database.

'password' で置き換える現在のユーザー パスワードです。The current user password that will be replaced by 'password'. パスワードでは大文字と小文字が区別されます。Passwords are case-sensitive. ALTER ANY USER 権限がない場合、パスワードを変更するには、OLD_PASSWORD が必要です。OLD_PASSWORD is required to change a password, unless you have ALTER ANY USER permission. OLD_PASSWORD を必須にすることで、IMPERSONATION 権限を持つユーザーによるパスワードの変更を防止できます。Requiring OLD_PASSWORD prevents users with IMPERSONATION permission from changing the password.

注意

このオプションは、包含ユーザーに対してのみ使用できます。This option is available only for contained users.

DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }
適用対象: SQL Server 2012 (11.x)SQL Server 2012 (11.x) から SQL Server 2017SQL Server 2017Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

ユーザーに割り当てる既定の言語を指定します。Specifies a default language to be assigned to the user. このオプションを NONE に設定した場合、既定の言語はデータベースの現在の既定の言語に設定されます。If this option is set to NONE, the default language is set to the current default language of the database. データベースの既定の言語が将来変更されても、ユーザーの既定の言語は変更されません。If the default language of the database is later changed, the default language of the user will remain unchanged. DEFAULT_LANGUAGE には、ローカル ID (LCID)、言語の名前、または言語の別名を指定できます。DEFAULT_LANGUAGE can be the local ID (lcid), the name of the language, or the language alias.

注意

このオプションは包含データベースでのみ指定でき、また、包含ユーザーに対してのみ指定できます。This option may only be specified in a contained database and only for contained users.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
適用対象: SQL Server 2016 (13.x)SQL Server 2016 (13.x) から SQL Server 2017SQL Server 2017SQL DatabaseSQL DatabaseApplies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017, SQL DatabaseSQL Database.

一括コピー操作でのサーバーの暗号化メタデータ チェックを抑制します。Suppresses cryptographic metadata checks on the server in bulk copy operations. これによりユーザーは、データを暗号化解除することなく、テーブルまたはデータベース間で暗号化データを一括コピーできます。This enables the user to bulk copy encrypted data between tables or databases, without decrypting the data. 既定値は OFF です。The default is OFF.

警告

このオプションを不適切に使用すると、データが破損する場合があります。Improper use of this option can lead to data corruption. 詳細については、「Always Encrypted で保護された機微なデータの移行」を参照してください。For more information, see Migrate Sensitive Data Protected by Always Encrypted.

RemarksRemarks

既定のスキーマは、このデータベース ユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマになります。The default schema will be the first schema that will be searched by the server when it resolves the names of objects for this database user. 特に指定しない限り、このデータベース ユーザーによって作成されたオブジェクトの所有者になるのは、既定のスキーマです。Unless otherwise specified, the default schema will be the owner of objects created by this database user.

ユーザーに既定のスキーマが設定されている場合は、その既定のスキーマが使用されます。If the user has a default schema, that default schema will used. ユーザーに既定のスキーマが指定されておらず、そのユーザーが所属しているグループに既定のスキーマが指定されている場合は、グループの既定のスキーマが使用されます。If the user does not have a default schema, but the user is a member of a group that has a default schema, the default schema of the group will be used. ユーザーに既定のスキーマが指定されておらず、そのユーザーが複数のグループに所属している場合、ユーザーの既定のスキーマは、最も小さい principle_id と明示的に設定された既定のスキーマを持つ Windows グループのスキーマになります。If the user does not have a default schema, and is a member of more than one group, the default schema for the user will be that of the Windows group with the lowest principal_id and an explicitly set default schema. ユーザーに対する既定のスキーマを決定できない場合は、dbo スキーマが使用されます。If no default schema can be determined for a user, the dbo schema will be used.

DEFAULT_SCHEMA には、データベースに現在存在しないスキーマも設定できます。DEFAULT_SCHEMA can be set to a schema that does not currently occur in the database. したがって、スキーマが作成される前に DEFAULT_SCHEMA をユーザーに割り当てることができます。Therefore, you can assign a DEFAULT_SCHEMA to a user before that schema is created.

証明書または非対称キーにマップされているユーザーに対して DEFAULT_SCHEMA を指定することはできません。DEFAULT_SCHEMA cannot be specified for a user who is mapped to a certificate, or an asymmetric key.

重要

ユーザーが固定サーバー ロール sysadmin のメンバーである場合、DEFAULT_SCHEMA の値は無視されます。The value of DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin fixed server role. 固定サーバー ロール sysadmin のすべてのメンバーには、dbo の既定のスキーマが割り当てられます。All members of the sysadmin fixed server role have a default schema of dbo.

Windows のログインまたはグループにマップされているユーザーの名前を変更できるのは、新しいユーザー名の SID とデータベースに記録されている SID が一致する場合だけです。You can change the name of a user who is mapped to a Windows login or group only when the SID of the new user name matches the SID that is recorded in the database. この条件により、データベースにおける Windows ログインのなりすましを防止できます。This check helps prevent spoofing of Windows logins in the database.

WITH LOGIN 句を使用すると、ユーザーを別のログインに再マップできます。The WITH LOGIN clause enables the remapping of a user to a different login. ログインのないユーザー、証明書にマップされているユーザー、非対称キーにマップされているユーザーをこの句で再マップすることはできません。Users without a login, users mapped to a certificate, or users mapped to an asymmetric key cannot be re-mapped with this clause. SQL ユーザーおよび Windows ユーザー (またはグループ) のみ再マップできます。Only SQL users and Windows users (or groups) can be remapped. WITH LOGIN 句は、SQL ServerSQL Server ログインへの Windows アカウントの変更など、ユーザーの種類の変更には使用できません。The WITH LOGIN clause cannot be used to change the type of user, such as changing a Windows account to a SQL ServerSQL Server login.

次の条件を満たす場合、ユーザーの名前はログイン名に自動的に変更されます。The name of the user will be automatically renamed to the login name if the following conditions are true.

  • ユーザーが Windows ユーザーである。The user is a Windows user.

  • 名前が Windows 名である (円記号を含む)。The name is a Windows name (contains a backslash).

  • 新しい名前が指定されていない。No new name was specified.

  • 現在の名前がログイン名とは異なる。The current name differs from the login name.

これらの条件を満たさない場合は、呼び出し元が NAME 句を追加で呼び出さない限り、ユーザーの名前は変更されません。Otherwise, the user will not be renamed unless the caller additionally invokes the NAME clause.

SQL ServerSQL Server のログイン、証明書、非対称キーにマップされているユーザーの名前には、円記号 (\) を含めることはできません。The name of a user mapped to a SQL ServerSQL Server login, a certificate, or an asymmetric key cannot contain the backslash character (\).

注意事項

SQL Server 2005 からスキーマの動作が変更されました。Beginning with SQL Server 2005, the behavior of schemas changed. その結果、スキーマがデータベース ユーザーと同じであると想定しているコードでは、正しい結果が返されない場合があります。As a result, code that assumes that schemas are equivalent to database users may no longer return correct results. 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 などの古いカタログ ビューを使用しないでください。Old catalog views, including sysobjects, should not be used in a database in which any of the following DDL statements have ever been used: 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. そのようなデータベースでは、代わりに新しいカタログ ビューを使用してください。In such databases you must instead use the new catalog views. 新しいカタログ ビューでは、SQL Server 2005 で導入されたプリンシパルとスキーマの分離が考慮されます。The new catalog views take into account the separation of principals and schemas that was introduced in SQL Server 2005. カタログ ビューの詳細については、「カタログ ビュー (Transact-SQL)」を参照してください。For more information about catalog views, see Catalog Views (Transact-SQL).

SecuritySecurity

注意

ALTER ANY USER 権限を持つユーザーは、任意のユーザーの既定のスキーマを変更できます。A user who has ALTER ANY USER permission can change the default schema of any user. 変更されたスキーマを所有するユーザーは、知らずに間違ったテーブルからデータを選択したり、間違ったスキーマからコードを実行する可能性があります。A user who has an altered schema might unknowingly select data from the wrong table or execute code from the wrong schema.

アクセス許可Permissions

ユーザーの名前を変更するには、ALTER ANY USER 権限が必要です。To change the name of a user requires the ALTER ANY USER permission.

ターゲットを変更するには、ユーザーのログインにデータベースの CONTROL 権限が必要です。To change the target login of a user requires the CONTROL permission on the database.

データベースに対する CONTROL 権限を持つユーザーのユーザー名を変更するには、データベースに対する CONTROL 権限が必要です。To change the user name of a user having CONTROL permission on the database requires the CONTROL permission on the database.

既定のスキーマまたは言語を変更するには、ユーザーに対する ALTER 権限が必要です。To change the default schema or language requires ALTER permission on the user. ユーザーは自分が所有する既定のスキーマまたは言語を変更できます。Users can change their own default schema or language.

使用例Examples

すべての例は、ユーザー データベースで実行されます。All examples are executed in a user database.

A.A. データベース ユーザーの名前を変更するChanging the name of a database user

次の例では、データベース ユーザー Mary5 の名前を Mary51 に変更します。The following example changes the name of the database user Mary5 to Mary51.

ALTER USER Mary5 WITH NAME = Mary51;  
GO  

B.B. ユーザーの既定のスキーマを変更するChanging the default schema of a user

次の例では、ユーザー Mary51 の既定のスキーマを Purchasing に変更します。The following example changes the default schema of the user Mary51 to Purchasing.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;  
GO  

C.C. 複数のオプションを一度に変更するChanging several options at once

次の例では、包含データベース ユーザーに対する複数のオプションを 1 つのステートメントで変更します。The following example changes several options for a contained database user in one statement.

適用対象: SQL Server 2012 (11.x)SQL Server 2012 (11.x) から SQL Server 2017SQL Server 2017Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

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

参照See Also

CREATE USER (Transact-SQL) CREATE USER (Transact-SQL)
DROP USER (Transact-SQL) DROP USER (Transact-SQL)
包含データベース Contained Databases
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
sp_migrate_user_to_contained (Transact-SQL)sp_migrate_user_to_contained (Transact-SQL)