CREATE USER (Transact-SQL)CREATE USER (Transact-SQL)

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

現在のデータベースにユーザーを追加します。Adds a user to the current database. 12 種類のユーザーの一覧を、最も基本的な構文のサンプルと共に、次に示します。The 12 types of users are listed below with a sample of the most basic syntax:

master 内のログインに基づくユーザー - これは最も一般的な種類のユーザーです。Users based on logins in master - This is the most common type of user.

  • Windows Active Directory アカウントに基づくログインに基づくユーザー。User based on a login based on a Windows Active Directory account. CREATE USER [Contoso\Fritz];
  • Windows グループに基づくログインに基づくユーザー。User based on a login based on a Windows group. CREATE USER [Contoso\Sales];
  • SQL ServerSQL Server 認証を使用したログインに基づくユーザー。User based on a login using SQL ServerSQL Server authentication. CREATE USER Mary;

データベースで認証されるユーザー - データベースの移植性を高めるために推奨されます。Users that authenticate at the database - Recommended to help make your database more portable.
SQL DatabaseSQL Database で常に許可されます。Always allowed in SQL DatabaseSQL Database. SQL ServerSQL Server の包含データベースでのみ許可されます。Only allowed in a contained database in SQL ServerSQL Server.

  • ログインのない Windows ユーザーに基づくユーザー。User based on a Windows user that has no login. CREATE USER [Contoso\Fritz];

  • ログインのない Windows グループに基づくユーザー。User based on a Windows group that has no login. CREATE USER [Contoso\Sales];

  • Azure Active Directory ユーザーに基づく SQL DatabaseSQL Database または SQL データ ウェアハウスSQL Data Warehouse のユーザー。User in SQL DatabaseSQL Database or SQL データ ウェアハウスSQL Data Warehouse based on an Azure Active Directory user. CREATE USER [Fritz@contoso.com] FROM EXTERNAL PROVIDER;

  • パスワードを持つ包含データベース ユーザー。Contained database user with password. (SQL データ ウェアハウスSQL Data Warehouse では使用できません。) CREATE USER Mary WITH PASSWORD = '********';(Not available in SQL データ ウェアハウスSQL Data Warehouse.) CREATE USER Mary WITH PASSWORD = '********';

Windows グループ ログインを介して接続する Windows プリンシパルに基づくユーザーUsers based on Windows principals that connect through Windows group logins

  • ログインのない Windows ユーザーに基づくユーザーでありながら、Windows グループのメンバーシップを介してデータベース エンジンDatabase Engineに接続できるユーザー。User based on a Windows user that has no login, but can connect to the データベース エンジンDatabase Engine through membership in a Windows group. CREATE USER [Contoso\Fritz];

  • ログインのない Windows グループに基づくユーザーでありながら、別の Windows グループのメンバーシップを介してデータベース エンジンDatabase Engineに接続できるユーザー。User based on a Windows group that has no login, but can connect to the データベース エンジンDatabase Engine through membership in a different Windows group. CREATE USER [Contoso\Fritz];

認証できないユーザー - これらのユーザーは SQL ServerSQL Server または SQL DatabaseSQL Database にログインできません。Users that cannot authenticate - These users cannot login to SQL ServerSQL Server or SQL DatabaseSQL Database.

  • ログインのないユーザー。User without a login. ログインできませんが、権限の付与対象となります。Cannot login but can be granted permissions. CREATE USER CustomApp WITHOUT LOGIN;
  • 証明書に基づくユーザー。User based on a certificate. ログインできませんが、権限の付与対象となり、モジュールに署名できます。Cannot login but can be granted permissions and can sign modules. CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
  • 非対称キーに基づくユーザー。User based on an asymmetric key. ログインできませんが、権限の付与対象となり、モジュールに署名できます。Cannot login but can be granted permissions and can sign modules. CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;

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

構文Syntax

-- Syntax for SQL Server, Azure SQL Database, and Azure SQL Database managed instance
  
-- Syntax Users based on logins in master  
CREATE USER user_name   
    [   
        { FOR | FROM } LOGIN login_name   
    ]  
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  
  
-- Users that authenticate at the database  
CREATE USER   
    {  
      windows_principal [ WITH <options_list> [ ,... ] ]  
  
    | user_name WITH PASSWORD = 'password' [ , <options_list> [ ,... ]   
    | Azure_Active_Directory_principal FROM EXTERNAL PROVIDER   
    }  
  
 [ ; ]  
  
-- Users based on Windows principals that connect through Windows group logins  
CREATE USER   
    {   
          windows_principal [ { FOR | FROM } LOGIN windows_principal ]  
        | user_name { FOR | FROM } LOGIN windows_principal  
}  
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  
  
-- Users that cannot authenticate   
CREATE USER user_name   
    {  
         WITHOUT LOGIN [ WITH <limited_options_list> [ ,... ] ]  
       | { FOR | FROM } CERTIFICATE cert_name   
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name   
    }  
 [ ; ]  
  
<options_list> ::=  
      DEFAULT_SCHEMA = schema_name  
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }  
    | SID = sid   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]  
  
<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name ]   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]  
  
-- SQL Database syntax when connected to a federation member  
CREATE USER user_name  
[;]

-- Syntax for users based on Azure AD logins for Azure SQL Database managed instance
CREATE USER user_name   
    [   { FOR | FROM } LOGIN login_name  ]  
    | FROM EXTERNAL PROVIDER
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  

<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name 
    | 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.

-- Syntax for Azure SQL Data Warehouse  
  
CREATE USER user_name   
    [ { { FOR | FROM } { LOGIN login_name }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]

CREATE USER Azure_Active_Directory_principal FROM EXTERNAL PROVIDER  
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]
-- Syntax for Parallel Data Warehouse  
  
CREATE USER user_name   
    [ { { FOR | FROM }  
      {   
        LOGIN login_name   
      }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]  

引数Arguments

user_nameuser_name
データベース内でユーザーを識別する名前を指定します。Specifies the name by which the user is identified inside this database. user_name は、sysname です。user_name is a sysname. 半角 128 文字まで指定できます。It can be up to 128 characters long. Windows プリンシパルに基づいてユーザーを作成する場合、別のユーザー名を指定しないと、Windows プリンシパル名がユーザー名になります。When creating a user based on a Windows principal, the Windows principal name becomes the user name unless another user name is specified.

LOGIN login_nameLOGIN login_name
作成するデータベース ユーザーのログインを指定します。Specifies the login for which the database user is being created. login_name は、サーバーで有効なログインである必要があります。login_name must be a valid login in the server. Windows プリンシパルに基づくログイン (ユーザーまたはグループ) か、または SQL ServerSQL Server 認証を使用したログインを指定できます。Can be a login based on a Windows principal (user or group), or a login using SQL ServerSQL Server authentication. この SQL Server ログインをデータベースに対して入力すると、データベースでは、作成されるデータベース ユーザーの名前と ID が取得されます。When this SQL Server login enters the database, it acquires the name and ID of the database user that is being created. Windows プリンシパルからマップされたログインを作成する場合は、 [ <domainName> \ <loginName> ] という形式を使用します。When creating a login mapped from a Windows principal, use the format [<domainName>\<loginName>]. 例については、「構文の概要」を参照してください。For examples, see Syntax Summary.

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

WITH DEFAULT_SCHEMA = schema_nameWITH DEFAULT_SCHEMA = schema_name
このデータベース ユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマを指定します。Specifies the first schema that will be searched by the server when it resolves the names of objects for this database user.

'windows_principal''windows_principal'
データベース ユーザーを作成する Windows プリンシパルを指定します。Specifies the Windows principal for which the database user is being created. windows_principal には、Windows ユーザーまたは Windows グループを指定できます。The windows_principal can be a Windows user, or a Windows group. windows_principal がログインを持たない場合でも、ユーザーは作成されます。The user will be created even if the windows_principal does not have a login. SQL ServerSQL Server に接続するときに、windows_principal がログインを持たない場合、ログインを持つ Windows グループのメンバーシップを介して データベース エンジンDatabase Engine で Windows プリンシパルを認証するか、または接続文字列で包含データベースを初期カタログとして指定する必要があります。When connecting to SQL ServerSQL Server, if the windows_principal does not have a login, the Windows principal must authenticate at the データベース エンジンDatabase Engine through membership in a Windows group that has a login, or the connection string must specify the contained database as the initial catalog. Windows プリンシパルからユーザーを作成する場合は、 [ <domainName> \ <loginName> ] という形式を使用します。When creating a user from a Windows principal, use the format [<domainName>\<loginName>]. 例については、「構文の概要」を参照してください。For examples, see Syntax Summary. Active Directory ユーザーに基づくユーザーは、21 文字未満の名前に制限されます。Users based on Active Directory users, are limited to names of fewer than 21 characters.

'Azure_Active_Directory_principal''Azure_Active_Directory_principal'
適用対象: SQL DatabaseSQL DatabaseSQL データ ウェアハウスSQL Data WarehouseApplies to: SQL DatabaseSQL Database, SQL データ ウェアハウスSQL Data Warehouse.

データベース ユーザーが作成される Azure Active Directory のプリンシパルを指定します。Specifies the Azure Active Directory principal for which the database user is being created. Azure_Active_Directory_principal には、Azure Active Directory ユーザー、Azure Active Directory グループ、Azure Active Directory アプリケーションを指定できます。The Azure_Active_Directory_principal can be an Azure Active Directory user, an Azure Active Directory group, or an Azure Active Directory application. (Azure Active Directory ユーザーは、SQL DatabaseSQL Database に Windows 認証ログインを持つことはできません。データベース ユーザーのみです)。接続文字列では、初期カタログとして、包含データベースを指定する必要があります。(Azure Active Directory users cannot have Windows Authentication logins in SQL DatabaseSQL Database; only database users.) The connection string must specify the contained database as the initial catalog.

Azure AD プリンシパルに対して、CREATE USER 構文では次が要求されます。For Azure AD principals, the CREATE USER syntax requires:

  • Azure AD ユーザー用の Azure AD オブジェクトの UserPrincipalName。UserPrincipalName of the Azure AD object for Azure AD Users.

    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
  • Azure AD のグループと Azure AD アプリケーション用の Azure AD オブジェクトの DisplayName。DisplayName of Azure AD object for Azure AD Groups and Azure AD Applications. "看護師" セキュリティ グループがあった場合は、次を使用します。If you had the Nurses security group, you would use:

    • CREATE USER [Nurses] FROM EXTERNAL PROVIDER;

詳細については、「 Azure Active Directory 認証を使用して SQL Database に接続する」を参照してください。For more information, see Connecting to SQL Database By Using Azure Active Directory Authentication.

WITH PASSWORD = 'password'WITH PASSWORD = 'password'
適用対象: SQL Server 2012 (11.x)SQL Server 2012 (11.x) から SQL Server 2017SQL Server 2017SQL DatabaseSQL DatabaseApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017, SQL DatabaseSQL Database.

包含データベースでのみ使用できます。Can only be used in a contained database. 作成するユーザーのパスワードを指定します。Specifies the password for the user that is being created. SQL Server 2012 (11.x)SQL Server 2012 (11.x) 以降では、保存されたパスワード情報は salt 化パスワードの SHA-512 を使用して計算されます。Beginning with SQL Server 2012 (11.x)SQL Server 2012 (11.x), stored password information is calculated using SHA-512 of the salted password.

WITHOUT LOGINWITHOUT LOGIN
ユーザーを既存のログインにマップしません。Specifies that the user should not be mapped to an existing login.

CERTIFICATE cert_nameCERTIFICATE cert_name
適用対象: SQL Server 2008SQL Server 2008 から SQL Server 2017SQL Server 2017SQL DatabaseSQL DatabaseApplies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, SQL DatabaseSQL Database.

作成するデータベース ユーザーの証明書を指定します。Specifies the certificate for which the database user is being created.

ASYMMETRIC KEY asym_key_nameASYMMETRIC KEY asym_key_name
適用対象: SQL Server 2008SQL Server 2008 から SQL Server 2017SQL Server 2017SQL DatabaseSQL DatabaseApplies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, SQL DatabaseSQL Database.

作成するデータベース ユーザーの非対称キーを指定します。Specifies the asymmetric key for which the database user is being created.

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 2017SQL DatabaseSQL DatabaseApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017, SQL DatabaseSQL Database.

新しいユーザーの既定の言語を指定します。Specifies the default language for the new user. ユーザーに対して既定の言語を指定した場合、データベースの既定の言語を後で変更しても、ユーザーの既定の言語は指定した言語のままになります。If a default language is specified for the user and the default language of the database is later changed, the users default language remains as specified. 既定の言語を指定しない場合、データベースの既定の言語がユーザーの既定の言語として使用されます。If no default language is specified, the default language for the user will be the default language of the database. ユーザーに対して既定の言語を指定しない場合、データベースの既定の言語を後で変更すると、ユーザーの既定の言語はデータベースの新しい既定の言語に変更されます。If the default language for the user is not specified and the default language of the database is later changed, the default language of the user will change to the new default language for the database.

重要

DEFAULT_LANGUAGE は包含データベース ユーザーにのみ使用します。DEFAULT_LANGUAGE is used only for a contained database user.

SID = sidSID = sid
適用対象: 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.

包含データベースにパスワード (SQL ServerSQL Server 認証) を持つユーザーに対してのみ適用されます。Applies only to users with passwords ( SQL ServerSQL Server authentication) in a contained database. 新しいデータベース ユーザーの SID を指定します。Specifies the SID of the new database user. このオプションを選択しない場合は、SQL ServerSQL Server によって SID が自動的に割り当てられます。If this option is not selected, SQL ServerSQL Server automatically assigns a SID. 複数のデータベースで同じ ID (SID) を持つユーザーを作成するには SID パラメーターを使用します。Use the SID parameter to create users in multiple databases that have the same identity (SID). これは、Always On フェールオーバーの準備のために、複数のデータベースにユーザーを作成する場合に役立ちます。This is useful when creating users in multiple databases to prepare for Always On failover. ユーザーの SID を特定するには、sys.database_principals でクエリを実行します。To determine the SID of a user, query sys.database_principals.

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

FOR LOGIN を省略した場合、新しいデータベース ユーザーは同じユーザー名を持つ SQL ServerSQL Server ログインにマップされます。If FOR LOGIN is omitted, the new database user will be mapped to the SQL ServerSQL Server login with the same name.

既定のスキーマは、このデータベース ユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマになります。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 スキーマが使用されます。(It is not possible to explicitly select one of the available default schemas as the preferred schema.) If no default schema can be determined for a user, the dbo schema will be used.

DEFAULT_SCHEMA は、このオプションが指すスキーマが作成されていなくても設定できます。DEFAULT_SCHEMA can be set before the schema that it points to is created.

DEFAULT_SCHEMA は、証明書または非対称キーにマップされるユーザーを作成する場合には指定できません。DEFAULT_SCHEMA cannot be specified when you are creating a user 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.

WITHOUT LOGIN 句でユーザーを作成する場合、ユーザーは SQL Server ログインにマップされず、The WITHOUT LOGIN clause creates a user that is not mapped to a SQL Server login. 他のデータベースには guest として接続できます。It can connect to other databases as guest. ログインのないこのユーザーには権限を割り当てることができます。セキュリティ コンテキストがログインのないユーザーに変更されると、元のユーザーはログインのないユーザーの権限を受け取ります。Permissions can be assigned to this user without login and when the security context is changed to a user without login, the original users receives the permissions of the user without login. 例については、「D. ログインのないユーザーを作成して使用する」を参照してください。See example D. Creating and using a user without a login.

Windows プリンシパルに割り当てられているユーザーにのみ、円記号 ( \ ) を含めることができます。Only users that are mapped to Windows principals can contain the backslash character (\).

guest ユーザーは各データベース内に既に存在しているため、CREATE USER を使用して guest ユーザーを作成することはできません。CREATE USER cannot be used to create a guest user because the guest user already exists inside every database. guest ユーザーは、次のように CONNECT 権限を与えることで有効にできます。You can enable the guest user by granting it CONNECT permission, as shown:

GRANT CONNECT TO guest;  
GO  

データベースのユーザーに関する情報については、sys.database_principals カタログ ビューを参照してください。Information about database users is visible in the sys.database_principals catalog view.

SQL Database マネージド インスタンスでサーバーレベルの Azure AD ログインを作成するために新しい構文拡張 FROM EXTERNAL PROVIDER を利用できます。A new syntax extension, FROM EXTERNAL PROVIDER is available for creating server-level Azure AD logins in SQL Database managed instance. Azure AD ログインでは、データベースレベルの Azure AD プリンシパルをサーバーレベルの Azure AD ログインにマッピングできます。Azure AD logins allow database-level Azure AD principals to be mapped to server-level Azure AD logins. Azure AD ログインから Azure AD ユーザーを作成するには、次の構文を使用します。To create an Azure AD user from an Azure AD login use the following syntax:

CREATE USER [AAD_principal] FROM LOGIN [Azure AD login]

SQL Database マネージド インスタンス データベースでユーザーを作成するとき、login_name が既存の Azure AD ログインに一致する必要があります。一致しない場合、FROM EXTERNAL PROVIDER 句を使用したとき、マスター データベースのログインなしで Azure AD ユーザーのみが作成されます。When creating the user in the SQL Database managed instance database, the login_name must correspond to an existing Azure AD login, or else using the FROM EXTERNAL PROVIDER clause will only create an Azure AD user without a login in the master database. たとえば、このコマンドでは、包含ユーザーが作成されます。For example, this command will create a contained user:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER

構文の概要Syntax Summary

master 内のログインに基づくユーザーUsers based on logins in master

ログインに基づくユーザーに関して使用できる構文を次に示します。The following list shows possible syntax for users based on logins. 既定のスキーマ オプションは除外しています。The default schema options are not listed.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FROM LOGIN SQLAUTHLOGIN

データベースで認証されるユーザーUsers that authenticate at the database

包含データベースでのみ使用できるユーザーに関して使用できる構文を次に示します。The following list shows possible syntax for users that can only be used in a contained database. 作成されるユーザーは、master データベース内のどのログインにも関連付けられません。The users created will not be related to any logins in the master database. 既定のスキーマおよび言語オプションは除外しています。The default schema and language options are not listed.

重要

この構文では、データベースへのアクセス許可とデータベース エンジンDatabase Engineへの新しいアクセス許可がユーザーに与えられます。This syntax grants users access to the database and also grants new access to the データベース エンジンDatabase Engine.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'

master にログインのない Windows プリンシパルに基づくユーザーUsers based on Windows principals without logins in master

Windows グループを介して データベース エンジンDatabase Engine にアクセスできる一方で、master にログインを持たないユーザーが使用できる構文を次に示します。The following list shows possible syntax for users that have access to the データベース エンジンDatabase Engine through a Windows group but do not have a login in master. この構文は、あらゆる種類のデータベースで使用できます。This syntax can be used in all types of databases. 既定のスキーマおよび言語オプションは除外しています。The default schema and language options are not listed.

この構文は master 内のログインに基づくユーザーの構文と似ていますが、このカテゴリのユーザーは master 内にログインを持ちません。This syntax is similar to users based on logins in master, but this category of user does not have a login in master. ユーザーは、Windows グループ ログインを介してデータベース エンジンDatabase Engineにアクセスする許可が与えられている必要があります。The user must have access to the データベース エンジンDatabase Engine through a Windows group login.

この構文は Windows プリンシパルに基づく包含データベース ユーザーの構文に似ていますが、このカテゴリのユーザーにはデータベース エンジンDatabase Engineへの新しいアクセス許可は与えられません。This syntax is similar to contained database users based on Windows principals, but this category of user does not get new access to the データベース エンジンDatabase Engine.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]

認証できないユーザーUsers that cannot authenticate

SQL ServerSQL Server にログインできないユーザーに関して使用できる構文を次に示します。The following list shows possible syntax for users that cannot login to SQL ServerSQL Server.

  • CREATE USER RIGHTSHOLDER WITHOUT LOGIN
  • CREATE USER CERTUSER FOR CERTIFICATE SpecialCert
  • CREATE USER CERTUSER FROM CERTIFICATE SpecialCert
  • CREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKey
  • CREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey

SecuritySecurity

ユーザーを作成するとデータベースへのアクセス許可が与えられますが、データベース内のオブジェクトに対するアクセス許可は自動的には与えられません。Creating a user grants access to a database but does not automatically grant any access to the objects in a database. ユーザーを作成した後の一般的な操作として、データベース オブジェクトに対する権限を持つデータベース ロールにユーザーを追加するか、またはオブジェクト権限をユーザーに付与します。After creating a user, common actions are to add users to database roles that have permission to access database objects, or grant object permissions to the user. 権限システムの設計の詳細については、「 データベース エンジンの権限の概要」を参照してください。For information about designing a permissions system, see Getting Started with Database Engine Permissions.

包含データベースに関する注意事項Special Considerations for Contained Databases

包含データベースに接続するときに、ユーザーが master データベース内にログインを持たない場合、接続文字列に包含データベース名を初期カタログとして含める必要があります。When connecting to a contained database, if the user does not have a login in the master database, the connection string must include the contained database name as the initial catalog. 初期カタログ パラメーターは、パスワードを持つ包含データベース ユーザーに対して常に必要になります。The initial catalog parameter is always required for a contained database user with password.

包含データベースでは、ユーザーを作成することにより、データベースとデータベース エンジンDatabase Engineのインスタンスとを分離して、データベースを SQL ServerSQL Server の別のインスタンスに簡単に移動できるようになります。In a contained database, creating users helps separate the database from the instance of the データベース エンジンDatabase Engine so that the database can easily be moved to another instance of SQL ServerSQL Server. 詳細については、「包含データベース」および「包含データベース ユーザー - データベースの可搬性を確保する」を参照してください。For more information, see Contained Databases and Contained Database Users - Making Your Database Portable. SQL ServerSQL Server 認証ログインに基づくデータベース ユーザーを、パスワードを持つ包含データベース ユーザーに変更する方法については、「sp_migrate_user_to_contained (Transact-SQL)」をご覧ください。To change a database user from a user based on a SQL ServerSQL Server authentication login to a contained database user with password, see sp_migrate_user_to_contained (Transact-SQL).

包含データベースでは、ユーザーは master データベース内にログインを持つ必要はありません。In a contained database, users do not have to have logins in the master database. データベース エンジンDatabase Engine 管理者は、包含データベースに対するアクセス許可を データベース エンジンDatabase Engine レベルではなくデータベース レベルで付与できることを理解する必要があります。administrators should understand that access to a contained database can be granted at the database level, instead of the データベース エンジンDatabase Engine level. 詳細については、「 Security Best Practices with Contained Databases」を参照してください。For more information, see Security Best Practices with Contained Databases.

Azure SQL データベースAzure SQL Database で包含データベース ユーザーを使用する場合、サーバー レベルのファイアウォール ルールではなく、データベース レベルのファイアウォール ルールを使用してアクセスを構成します。When using contained database users on Azure SQL データベースAzure SQL Database, configure access using a database-level firewall rule, instead of a server-level firewall rule. 詳細については、「sp_set_database_firewall_rule (Azure SQL Database)」を参照してください。For more information, see sp_set_database_firewall_rule (Azure SQL Database).

SQL DatabaseSQL DatabaseSQL データ ウェアハウスSQL Data Warehouse の包含データベースのユーザーについては、SSMS で多要素認証がサポートされます。For SQL DatabaseSQL Database and SQL データ ウェアハウスSQL Data Warehouse contained database users, SSMS can support Multi-Factor Authentication. 詳細については、「 SQL Database と SQL Data Warehouse での Azure AD MFA のための SSMS のサポート」をご覧ください。For more information, see SSMS support for Azure AD MFA with SQL Database and SQL Data Warehouse.

アクセス許可Permissions

データベースに対する ALTER ANY USER 権限が必要です。Requires ALTER ANY USER permission on the database.

使用例Examples

A.A. SQL Server ログインに基づくデータベース ユーザーを作成するCreating a database user based on a SQL Server login

次の例では、最初に AbolrousHazem という SQL ServerSQL Server ログインを作成し、次に対応するデータベース ユーザー AbolrousHazemAdventureWorks2012 に作成します。The following example first creates a SQL ServerSQL Server login named AbolrousHazem, and then creates a corresponding database user AbolrousHazem in AdventureWorks2012.

CREATE LOGIN AbolrousHazem   
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';  

ユーザー データベースに変更します。Change to a user database. たとえば、SQL ServerSQL Server では USE AdventureWorks2012 ステートメントを使用します。For example, in SQL ServerSQL Server use the USE AdventureWorks2012 statement. Azure SQL データ ウェアハウスAzure SQL Data WarehouseParallel Data WarehouseParallel Data Warehouse では、ユーザー データベースへの新しい接続を作成する必要があります。In Azure SQL データ ウェアハウスAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse, you must make a new connection to the user database.

CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;  
GO   

B.B. 既定のスキーマでデータベース ユーザーを作成するCreating a database user with a default schema

次の例では、まず WanidaBenshoof というサーバー ログインをパスワード付きで作成し、次に対応するデータベース ユーザー Wanida を既定のスキーマ Marketing で作成します。The following example first creates a server login named WanidaBenshoof with a password, and then creates a corresponding database user Wanida, with the default schema Marketing.

CREATE LOGIN WanidaBenshoof   
    WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';  
USE AdventureWorks2012;  
CREATE USER Wanida FOR LOGIN WanidaBenshoof   
    WITH DEFAULT_SCHEMA = Marketing;  
GO  

C.C. 証明書からデータベース ユーザーを作成するCreating a database user from a certificate

次の例では、証明書 JinghaoLiu からデータベース ユーザー CarnationProduction50 を作成します。The following example creates a database user JinghaoLiu from certificate CarnationProduction50.

適用対象: SQL Server 2008SQL Server 2008 から SQL Server 2017SQL Server 2017Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

USE AdventureWorks2012;  
CREATE CERTIFICATE CarnationProduction50  
    WITH SUBJECT = 'Carnation Production Facility Supervisors',  
    EXPIRY_DATE = '11/11/2011';  
GO  
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;  
GO   

D.D. ログインのないユーザーを作成して使用するCreating and using a user without a login

次の例では、SQL ServerSQL Server ログインにマップされないデータベース ユーザー CustomApp を作成します。The following example creates a database user CustomApp that does not map to a SQL ServerSQL Server login. その後、ユーザー adventure-works\tengiz0 に、CustomApp ユーザーの権限を借用する権限を許可します。The example then grants a user adventure-works\tengiz0 permission to impersonate the CustomApp user.

USE AdventureWorks2012 ;  
CREATE USER CustomApp WITHOUT LOGIN ;  
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;  
GO   

ユーザー CustomAppadventure-works\tengiz0 の資格情報を使用するには、次のステートメントを実行します。To use the CustomApp credentials, the user adventure-works\tengiz0 executes the following statement.

EXECUTE AS USER = 'CustomApp' ;  
GO  

adventure-works\tengiz0 の資格情報に戻すには、次のステートメントを実行します。To revert back to the adventure-works\tengiz0 credentials, the user executes the following statement.

REVERT ;  
GO  

E.E. パスワードを持つ包含データベース ユーザーを作成するCreating a contained database user with password

次の例では、パスワードを持つ包含データベース ユーザーを作成します。The following example creates a contained database user with password. この例は、包含データベースでのみ実行できます。This example can only be executed in a contained database.

適用対象: 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. この例は DEFAULT_LANGUAGE が削除された場合に SQL DatabaseSQL Database で機能します。This example works in SQL DatabaseSQL Database if DEFAULT_LANGUAGE is removed.

USE AdventureWorks2012 ;  
GO  
CREATE USER Carlo  
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'  
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

F.F. ドメイン ログインのための包含データベース ユーザーを作成するCreating a contained database user for a domain login

次の例では、Contoso という名前のドメインの Fritz という名前のログインに対する包含データベース ユーザーを作成します。The following example creates a contained database user for a login named Fritz in a domain named Contoso. この例は、包含データベースでのみ実行できます。This example can only be executed in a contained database.

適用対象: 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.

USE AdventureWorks2012 ;  
GO  
CREATE USER [Contoso\Fritz] ;  
GO   

G.G. 特定の SID を持つ包含データベース ユーザーを作成するCreating a contained database user with a specific SID

次の例では、CarmenW という名前の、SQL Server 認証を使用する包含データベース ユーザーを作成します。The following example creates a SQL Server authenticated contained database user named CarmenW. この例は、包含データベースでのみ実行できます。This example can only be executed in a contained database.

適用対象: 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.

USE AdventureWorks2012 ;  
GO  
CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+'  
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;  
  

H.H. 暗号化されたデータをコピーするためのユーザーを作成するCreating a user to copy encrypted data

以下の例では、Always Encrypted 機能によって保護されたデータを、暗号化された列を含む一連のテーブルから、(同じまたは異なるデータベースに) 暗号化された列を持つ別の一連のテーブルにコピーできるユーザーを作成します。The following example creates a user that can copy data that is protected by the Always Encrypted feature from one set of tables, containing encrypted columns, to another set of tables with encrypted columns (in the same or a different database). 詳細については、「Always Encrypted で保護された機微なデータの移行」を参照してください。For more information, see Migrate Sensitive Data Protected by Always Encrypted.

適用対象: 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.

CREATE USER [Chin]   
WITH   
      DEFAULT_SCHEMA = dbo  
    , ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;  

I.I. SQL Database マネージド インスタンス内で Azure AD ログインから Azure AD ユーザーを作成するCreate an Azure AD user from an Azure AD login in SQL Database managed instance

Azure AD ログインから Azure AD ユーザーを作成するには、次の構文を使用します。To create an Azure AD user from an Azure AD login, use the following syntax.

sysadmin ロールで付与された Azure AD ログインを使用してマネージド インスタンスにサインインします。Sign into your managed instance with an Azure AD login granted with the sysadmin role. 次の命令文ではログイン bob@contoso.com から Azure AD ユーザー bob@contoso.com が作成されます。The following creates an Azure AD user bob@contoso.com, from the login bob@contoso.com. このログインは CREATE LOGIN 例で作成されました。This login was created in the CREATE LOGIN example.

CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
GO

重要

Azure AD ログインから USER を作成するとき、LOGIN から同じ login_name として user_name を指定します。When creating a USER from an Azure AD login, specify the user_name as the same login_name from LOGIN.

グループである Azure AD ログインからグループとして Azure AD ユーザーを作成できます。Creating an Azure AD user as a group from an Azure AD login that is a group is supported.

CREATE USER [AAD group] FROM LOGIN [AAD group];
GO

また、グループである Azure AD ログインから Azure AD ユーザーを作成できます。You can also create an Azure AD user from an Azure AD login that is a group.

CREATE USER [bob@contoso.com] FROM LOGIN [AAD group];
GO

J.J. データベースの AAD ログインなしで Azure AD ユーザーを作成するCreate an Azure AD user without an AAD login for the database

次の構文は、SQL Database マネージド インスタンス データベース内で Azure AD ユーザー bob@contoso.com を作成するために使用されます (包含ユーザー)。The following syntax is used to create an Azure AD user bob@contoso.com, in the SQL Database managed instance database (contained user):

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO

次の手順Next steps

ユーザーを作成したら、ALTER ROLE ステートメントを使用して、ユーザーをデータベース ロールに追加することを検討します。Once the user is created, consider adding the user to a database role using the ALTER ROLE statement.
ロールに GRANT (オブジェクト権限の許可) を適用して、テーブルにアクセスできるようにすることもできます。You might also want to GRANT Object Permissions to the role so they can access tables. SQL Server セキュリティ モデルの概要については、権限に関するページを参照してください。For general information about the SQL Server security model, see Permissions.

参照See Also

データベース ユーザーの作成 Create a Database User
sys.database_principals (Transact-SQL) sys.database_principals (Transact-SQL)
ALTER USER (Transact-SQL) ALTER USER (Transact-SQL)
DROP USER (Transact-SQL) DROP USER (Transact-SQL)
CREATE LOGIN (Transact-SQL) CREATE LOGIN (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
包含データベース Contained Databases
Azure Active Directory の認証を使用して、SQL データベースに接続する Connecting to SQL Database By Using Azure Active Directory Authentication
データベース エンジンの権限の概要Getting Started with Database Engine Permissions