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

Cette rubrique s’applique à : OuiSQL Server (à partir de 2008)Ouibase de données SQL AzureOuiAzure SQL Data Warehouse Oui Parallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Ajoute un utilisateur à la base de données active.Adds a user to the current database. Onze types d’utilisateurs sont répertoriés ci-dessous avec un exemple de la syntaxe la plus basique :The eleven types of users are listed below with a sample of the most basic syntax:

Utilisateurs basés sur les comptes de connexion dans Master Il s’agit du type d’utilisateur le plus courant.Users based on logins in master This is the most common type of user.

  • Utilisateur basé sur un compte de connexion basé sur un compte Windows Active Directory.User based on a login based on a Windows Active Directory account. CREATE USER [Contoso\Fritz];
  • Utilisateur basé sur un compte de connexion basé sur un groupe Windows.User based on a login based on a Windows group. CREATE USER [Contoso\Sales];
  • Utilisateur basé sur un compte de connexion utilisant l'authentification SQL ServerSQL Server.User based on a login using SQL ServerSQL Server authentication. CREATE USER Mary;

Utilisateurs qui s’authentifient auprès de la base de données Recommandé pour accroître la portabilité de votre base de données.Users that authenticate at the database Recommended to help make your database more portable.
Toujours autorisé dans Base de données SQLSQL Database.Always allowed in Base de données SQLSQL Database. Autorisé uniquement dans une base de données à relation contenant-contenu dans SQL ServerSQL Server.Only allowed in a contained database in SQL ServerSQL Server.

  • Utilisateur basé sur un utilisateur Windows qui ne dispose d'aucun compte de connexion.User based on a Windows user that has no login. CREATE USER [Contoso\Fritz];
  • Utilisateur basé sur un groupe Windows qui ne dispose d'aucun compte de connexion.User based on a Windows group that has no login. CREATE USER [Contoso\Sales];
  • Utilisateur dans Base de données SQLSQL Database ou SQL Data WarehouseSQL Data Warehouse basé sur un utilisateur Azure Active Directory.User in Base de données SQLSQL Database or SQL Data WarehouseSQL Data Warehouse based on an Azure Active Directory user. CREATE USER [Contoso\Fritz] FROM EXTERNAL PROVIDER;

  • Utilisateur de base de données à relation contenant-contenu avec mot de passe.Contained database user with password. (Non disponible dans SQL Data WarehouseSQL Data Warehouse.) CREATE USER Mary WITH PASSWORD = '********';(Not available in SQL Data WarehouseSQL Data Warehouse.) CREATE USER Mary WITH PASSWORD = '********';

Utilisateurs basés sur des principaux Windows qui se connectent via des comptes de connexion de groupe WindowsUsers based on Windows principals that connect through Windows group logins

  • Utilisateur basé sur un utilisateur Windows qui ne dispose d'aucun compte de connexion, mais peut se connecter au Moteur de base de donnéesDatabase Engine via une appartenance à un groupe Windows.User based on a Windows user that has no login, but can connect to the Moteur de base de donnéesDatabase Engine through membership in a Windows group. CREATE USER [Contoso\Fritz];

  • Utilisateur basé sur un groupe Windows qui ne dispose pas de compte de connexion, mais qui peut se connecter au Moteur de base de donnéesDatabase Engine via l’appartenance à un autre groupe Windows.User based on a Windows group that has no login, but can connect to the Moteur de base de donnéesDatabase Engine through membership in a different Windows group. CREATE USER [Contoso\Fritz];

Utilisateurs qui ne peuvent pas s’authentifier Ces utilisateurs ne peuvent pas se connecter à SQL ServerSQL Server ou à Base de données SQLSQL Database.Users that cannot authenticate These users cannot login to SQL ServerSQL Server or Base de données SQLSQL Database.

  • Utilisateur sans compte de connexion.User without a login. Impossible de se connecter, mais peut se voir accorder des autorisations.Cannot login but can be granted permissions. CREATE USER CustomApp WITHOUT LOGIN;
  • Utilisateur basé sur un certificat.User based on a certificate. Impossible de se connecter, mais peut se voir accorder des autorisations et peut signer des modules.Cannot login but can be granted permissions and can sign modules. CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
  • Utilisateur basé sur une clé asymétrique.User based on an asymmetric key. Impossible de se connecter, mais peut se voir accorder des autorisations et peut signer des modules.Cannot login but can be granted permissions and can sign modules. CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

-- Syntax for SQL Server and Azure SQL Database  

-- 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 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 ]  
[;]  

ArgumentsArguments

user_nameuser_name
Spécifie le nom qui identifie l'utilisateur dans cette base de données.Specifies the name by which the user is identified inside this database. user_name est de type sysname.user_name is a sysname. Il peut comporter jusqu'à 128 caractères.It can be up to 128 characters long. Lors de la création d'un utilisateur basé sur un principal Windows, le nom du principal Windows devient le nom d'utilisateur sauf si un autre nom d'utilisateur est spécifié.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
Spécifie le compte de connexion pour lequel l'utilisateur de base de données est créé.Specifies the login for which the database user is being created. login_name doit être un compte de connexion valide sur le serveur.login_name must be a valid login in the server. Peut être un compte de connexion basé sur un principal Windows (utilisateur ou groupe), ou un compte de connexion utilisant l'authentification SQL ServerSQL Server.Can be a login based on a Windows principal (user or group), or a login using SQL ServerSQL Server authentication. Lorsque ce compte de connexion SQL ServerSQL Server accède à la base de données, il prend le nom et l'ID de l'utilisateur de base de données que vous créez.When this SQL ServerSQL Server login enters the database, it acquires the name and ID of the database user that is being created. Quand vous créez un compte de connexion mappé à partir d’un principal Windows, utilisez le format [<NomDomaine>\<NomCompteConnexion>].When creating a login mapped from a Windows principal, use the format [<domainName>\<loginName>]. Pour obtenir des exemples, consultez Résumé de syntaxe.For examples, see Syntax Summary.

Si l'instruction CREATE USER est la seule instruction d'un lot SQL, Microsoft Azure SQL Database prend en charge la clause WITH LOGIN.If the CREATE USER statement is the only statement in a SQL batch, Windows Azure SQL Database supports the WITH LOGIN clause. Si l'instruction CREATE USER n'est pas la seule instruction d'un lot SQL ou est exécutée en SQL dynamique, la clause WITH LOGIN n'est pas prise en charge.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
Spécifie le premier schéma que le serveur doit interroger pour résoudre les noms des objets associés à cet utilisateur de base de données.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'
Spécifie le principal Windows pour lequel l'utilisateur de la base de données est créé.Specifies the Windows principal for which the database user is being created. windows_principal peut être un utilisateur Windows ou un groupe Windows.The windows_principal can be a Windows user, or a Windows group. L’utilisateur est créé même si le windows_principal ne dispose pas de compte de connexion.The user will be created even if the windows_principal does not have a login. Lors de la connexion à SQL ServerSQL Server, si windows_principal ne dispose pas de compte de connexion, le principal Windows doit s’authentifier auprès du Moteur de base de donnéesDatabase Engine via l’appartenance à un groupe Windows qui dispose d’un compte de connexion, ou la chaîne de connexion doit spécifier la base de données à relation contenant-contenu comme catalogue initial.When connecting to SQL ServerSQL Server, if the windows_principal does not have a login, the Windows principal must authenticate at the Moteur de base de donnéesDatabase Engine through membership in a Windows group that has a login, or the connection string must specify the contained database as the initial catalog. Quand vous créez un utilisateur à partir d’un principal Windows, utilisez le format [<NomDomaine>\<NomCompteConnexion>].When creating a user from a Windows principal, use the format [<domainName>\<loginName>]. Pour obtenir des exemples, consultez Résumé de syntaxe.For examples, see Syntax Summary. Les utilisateurs basés sur des utilisateurs Active Directory sont limités aux noms de moins de 21 caractères.Users based on Active Directory users, are limited to names of less than 21 characters.

'Azure_Active_Directory_principal''Azure_Active_Directory_principal'
S’applique à : Base de données SQLSQL Database, SQL Data WarehouseSQL Data Warehouse.Applies to: Base de données SQLSQL Database, SQL Data WarehouseSQL Data Warehouse.

Spécifie le principal Azure Active Directory pour lequel l’utilisateur de la base de données est créé.Specifies the Azure Active Directory principal for which the database user is being created. Azure_Active_Directory_principal peut être un utilisateur Azure Active Directory ou un groupe Azure Active Directory.The Azure_Active_Directory_principal can be an Azure Active Directory user, or an Azure Active Directory group. (Les utilisateurs Azure Active Directory ne peuvent pas avoir de comptes de connexion d’authentification Windows Base de données SQLSQL Database ; seuls les utilisateurs de base de données le peuvent.) La chaîne de connexion doit spécifier la base de données à relation contenant-contenu comme catalogue initial.(Azure Active Directory users cannot have Windows Authentication logins in Base de données SQLSQL Database; only database users.) The connection string must specify the contained database as the initial catalog.

Pour les utilisateurs, vous utilisez l’alias complet de leur principal de domaine.For users, you use the full alias of their domain principal.

WITH PASSWORD = 'password'WITH PASSWORD = 'password'
S’applique à : SQL Server 2012 (11.x)SQL Server 2012 (11.x) jusqu’à SQL Server 2017SQL Server 2017, Base de données SQLSQL Database.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017, Base de données SQLSQL Database.

Peut être utilisé uniquement dans une base de données à relation contenant-contenu.Can only be used in a contained database. Spécifie le mot de passe de l'utilisateur en cours de création.Specifies the password for the user that is being created. Depuis SQL Server 2012 (11.x)SQL Server 2012 (11.x), les informations de mot de passe stockées sont calculées à l’aide de la valeur salt SHA-512 du mot de passe.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
Indique que l'utilisateur ne doit pas être mappé à une connexion existante.Specifies that the user should not be mapped to an existing login.

CERTIFICATE cert_nameCERTIFICATE cert_name
S’applique à : SQL Server 2008SQL Server 2008 jusqu’à SQL Server 2017SQL Server 2017, Base de données SQLSQL Database.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Base de données SQLSQL Database.

Spécifie le certificat pour lequel l'utilisateur de base de données est créé.Specifies the certificate for which the database user is being created.

ASYMMETRIC KEY asym_key_nameASYMMETRIC KEY asym_key_name
S’applique à : SQL Server 2008SQL Server 2008 jusqu’à SQL Server 2017SQL Server 2017, Base de données SQLSQL Database.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Base de données SQLSQL Database.

Spécifie la clé asymétrique pour laquelle l'utilisateur de base de données est créé.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> }
S’applique à : SQL Server 2012 (11.x)SQL Server 2012 (11.x) à SQL Server 2017SQL Server 2017, Base de données SQLSQL Database.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017, Base de données SQLSQL Database.

Spécifie la langue par défaut du nouvel utilisateur.Specifies the default language for the new user. Si une langue par défaut est spécifiée pour l'utilisateur et que la langue par défaut de la base de données est changée ultérieurement, la langue par défaut des utilisateurs reste comme spécifié.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. Si aucune langue par défaut n'est spécifiée, la langue par défaut de l'utilisateur correspondra à la langue par défaut de la base de données.If no default language is specified, the default language for the user will be the default language of the database. Si la langue par défaut n'est pas spécifiée pour l'utilisateur et que la langue par défaut de la base de données est changée ultérieurement, la langue par défaut de l'utilisateur est remplacée par la nouvelle langue par défaut de la base de données.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.

Important

DEFAULT_LANGUAGE est utilisé uniquement pour un utilisateur de base de données à relation contenant-contenu.DEFAULT_LANGUAGE is used only for a contained database user.

SID = sidSID = sid
S'applique à: SQL Server 2012 (11.x)SQL Server 2012 (11.x) jusqu'à SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

S'applique uniquement aux utilisateurs munis de mots de passe (authentification SQL ServerSQL Server) dans une base de données à relation contenant-contenu.Applies only to users with passwords ( SQL ServerSQL Server authentication) in a contained database. Spécifie le SID du nouvel utilisateur de base de données.Specifies the SID of the new database user. Si cette option n'est pas sélectionnée, SQL ServerSQL Server attribue automatiquement un SID.If this option is not selected, SQL ServerSQL Server automatically assigns a SID. Utilisez le paramètre SID pour créer des utilisateurs dans plusieurs bases de données qui ont la même identité (SID).Use the SID parameter to create users in multiple databases that have the same identity (SID). Cela s’avère utile lors de la création d’utilisateurs dans plusieurs bases de données pour la préparation du basculement AlwaysOn.This is useful when creating users in multiple databases to prepare for Always On failover. Pour déterminer le SID d’un utilisateur, interrogez 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 ] ]
S’applique à : SQL Server 2016 (13.x)SQL Server 2016 (13.x) à SQL Server 2017SQL Server 2017, Base de données SQLSQL Database.Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017, Base de données SQLSQL Database.

Supprime les contrôles de métadonnées de chiffrement sur le serveur dans les opérations de copie en bloc.Suppresses cryptographic metadata checks on the server in bulk copy operations. Cela permet à l’utilisateur de copier en bloc des données chiffrées entre des tables ou des bases de données, sans déchiffrer les données.This enables the user to bulk copy encrypted data between tables or databases, without decrypting the data. La valeur par défaut est OFF.The default is OFF.

Avertissement

Une utilisation incorrecte de cette option peut entraîner une altération des données.Improper use of this option can lead to data corruption. Pour plus d’informations, consultez Migrer des données sensibles protégées par Always Encrypted.For more information, see Migrate Sensitive Data Protected by Always Encrypted.

Notes Remarks

Si vous omettez FOR LOGIN, le nouvel utilisateur de base de données est mappé à la connexion SQL ServerSQL Server du même nom.If FOR LOGIN is omitted, the new database user will be mapped to the SQL ServerSQL Server login with the same name.

Le schéma par défaut correspond au premier schéma que le serveur doit interroger pour résoudre les noms des objets associés à cet utilisateur de base de données.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. Sauf spécification contraire, le schéma par défaut sera le propriétaire des objets créés par cet utilisateur de la base de données.Unless otherwise specified, the default schema will be the owner of objects created by this database user.

Si l'utilisateur possède un schéma par défaut, ce schéma par défaut est utilisé.If the user has a default schema, that default schema will used. Si l'utilisateur ne possède pas de schéma par défaut, mais qu'il est membre d'un groupe qui dispose d'un schéma par défaut, le schéma par défaut du groupe est utilisé.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. Si l'utilisateur ne possède pas de schéma par défaut, et qu'il est membre de plus d'un groupe, le schéma par défaut de l'utilisateur sera celui du groupe Windows avec le principal_id le plus bas et un schéma par défaut défini explicite.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. (Il n'est pas possible de sélectionner explicitement l'un des schémas par défaut disponibles comme schéma préférentiel.) Si aucun schéma par défaut ne peut être déterminé pour un utilisateur, le schéma dbo est utilisé.(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.

Il est possible de définir DEFAULT_SCHEMA avant de créer le schéma vers lequel il pointe.DEFAULT_SCHEMA can be set before the schema that it points to is created.

Vous ne pouvez pas spécifier DEFAULT_SCHEMA lorsque vous créez un utilisateur mappé à un certificat ou à une clé asymétrique.DEFAULT_SCHEMA cannot be specified when you are creating a user mapped to a certificate, or an asymmetric key.

La valeur de DEFAULT_SCHEMA est ignorée si l'utilisateur est membre du rôle serveur fixe sysadmin.The value of DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin fixed server role. Tous les membres du rôle serveur fixe sysadmin possèdent le schéma par défaut dbo.All members of the sysadmin fixed server role have a default schema of dbo.

La clause WITHOUT LOGIN crée un utilisateur qui n'est pas mappé à un compte de connexion SQL Server.The WITHOUT LOGIN clause creates a user that is not mapped to a SQL Server login. Il peut se connecter à d'autres bases de données en tant qu'invité.It can connect to other databases as guest. Les autorisations peuvent être attribuées à cet utilisateur sans compte de connexion et lorsque le contexte de sécurité est modifié en utilisateur sans compte de connexion, les utilisateurs d'origine reçoivent les autorisations de l'utilisateur sans compte de connexion.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. Consultez l’exemple D. Création et utilisation d’un utilisateur sans compte de connexion.See example D. Creating and using a user without a login.

Seuls les utilisateurs mappés à des principaux Windows peuvent contenir la barre oblique inverse (\).Only users that are mapped to Windows principals can contain the backslash character (\).

Vous ne pouvez pas utiliser CREATE USER pour créer un utilisateur invité, car ce dernier existe déjà dans toutes les bases de données.CREATE USER cannot be used to create a guest user because the guest user already exists inside every database. Vous pouvez activer l'utilisateur invité en lui accordant l'autorisation CONNECT comme suit :You can enable the guest user by granting it CONNECT permission, as shown:

GRANT CONNECT TO guest;  
GO  

Les informations relatives aux utilisateurs de base de données sont consultables dans la vue de catalogue sys.database_principals.Information about database users is visible in the sys.database_principals catalog view.

Résumé de syntaxeSyntax Summary

Utilisateurs basés sur des comptes de connexion dans MasterUsers based on logins in master

La liste suivante affiche la syntaxe possible pour les utilisateurs basés sur des comptes de connexion.The following list shows possible syntax for users based on logins. Les options de schéma par défaut ne sont pas répertoriées.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

Utilisateurs qui s’authentifient auprès de la base de donnéesUsers that authenticate at the database

La liste suivante affiche la syntaxe possible pour les utilisateurs qui peuvent être utilisés uniquement dans une base de données à relation contenant-contenu.The following list shows possible syntax for users that can only be used in a contained database. Les utilisateurs créés ne seront liés à aucun compte de connexion dans la base de données Master.The users created will not be related to any logins in the master database. Les options de langue et de schéma par défaut ne sont pas répertoriées.The default schema and language options are not listed.

Important

Cette syntaxe accorde aux utilisateurs un accès à la base de données, ainsi qu’un nouvel accès au Moteur de base de donnéesDatabase Engine.This syntax grants users access to the database and also grants new access to the Moteur de base de donnéesDatabase Engine.

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

Utilisateurs basés sur des principaux Windows sans comptes de connexion dans MasterUsers based on Windows principals without logins in master

La liste suivante affiche la syntaxe possible pour les utilisateurs qui ont accès au Moteur de base de donnéesDatabase Engine via un groupe Windows, mais qui ne disposent pas d’un compte de connexion dans Master.The following list shows possible syntax for users that have access to the Moteur de base de donnéesDatabase Engine through a Windows group but do not have a login in master. Cette syntaxe peut être utilisée dans tous les types de bases de données.This syntax can be used in all types of databases. Les options de langue et de schéma par défaut ne sont pas répertoriées.The default schema and language options are not listed.

Cette syntaxe est semblable aux utilisateurs basés sur des comptes de connexion dans master, mais cette catégorie d'utilisateurs ne dispose pas de compte de connexion dans master.This syntax is similar to users based on logins in master, but this category of user does not have a login in master. L’utilisateur doit avoir accès au Moteur de base de donnéesDatabase Engine via un compte de connexion de groupe Windows.The user must have access to the Moteur de base de donnéesDatabase Engine through a Windows group login.

Cette syntaxe est semblable à celle utilisées pour les utilisateurs de base de données à relation contenant-contenu basés sur des principaux Windows, mais cette catégorie d’utilisateurs n’obtient pas un nouvel accès au Moteur de base de donnéesDatabase 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 Moteur de base de donnéesDatabase 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]

Utilisateurs qui ne peuvent pas s’authentifierUsers that cannot authenticate

La liste suivante affiche la syntaxe possible pour les utilisateurs qui ne peuvent pas se connecter à 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

SécuritéSecurity

La création d'un utilisateur accorde l'accès à une base de données, mais n'accorde pas automatiquement l'accès aux objets d'une base de données.Creating a user grants access to a database but does not automatically grant any access to the objects in a database. Après avoir créé un utilisateur, les actions communes consistent à ajouter des utilisateurs aux rôles de base de données qui ont l'autorisation d'accéder aux objets de base de données ou d'octroyer des autorisations relatives aux objets à l'utilisateur.After creating a user, common actions are to add users to database roles which have permission to access database objects, or grant object permissions to the user. Pour plus d’informations sur la conception d’un système d’autorisations, voir Getting Started with Database Engine Permissions.For information about designing a permissions system, see Getting Started with Database Engine Permissions.

Considérations spéciales pour les bases de données à relation contenant-contenuSpecial Considerations for Contained Databases

Lors de la connexion à une base de données à relation contenant-contenu, si l’utilisateur ne dispose pas de compte de connexion dans la base de données Master, la chaîne de connexion doit inclure le nom de la base de données à relation contenant-contenu comme catalogue initial.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. Le paramètre de catalogue initial est toujours requis pour un utilisateur de base de données à relation contenant-contenu avec mot de passe.The initial catalog parameter is always required for a contained database user with password.

Dans une base de données à relation contenant-contenu, la création d’utilisateurs permet de séparer la base de données de l’instance du Moteur de base de donnéesDatabase Engine afin que la base de données puisse être déplacée facilement vers une autre instance de SQL ServerSQL Server.In a contained database, creating users helps separate the database from the instance of the Moteur de base de donnéesDatabase Engine so that the database can easily be moved to another instance of SQL ServerSQL Server. Pour plus d’informations, consultez Bases de données à relation contenant-contenu et Utilisateurs de base de données à relation contenant-contenu - Rendre votre base de données portable.For more information, see Contained Databases and Contained Database Users - Making Your Database Portable. Pour changer un utilisateur de base de données basé sur un compte de connexion d’authentification SQL ServerSQL Server en utilisateur de base de données à relation contenant-contenu avec mot de passe, consultez 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).

Dans une base de données à relation contenant-contenu, les utilisateurs n’ont pas besoin de disposer d’un compte de connexion dans la base de données Master.In a contained database, users do not have to have logins in the master database. Les administrateurs du Moteur de base de donnéesDatabase Engine doivent comprendre que l'accès à une base de données à relation contenant-contenu peut être accordé au niveau de la base de données, plutôt qu'au niveau du Moteur de base de donnéesDatabase Engine. Moteur de base de donnéesDatabase Engine administrators should understand that access to a contained database can be granted at the database level, instead of the Moteur de base de donnéesDatabase Engine level. Pour plus d'informations, consultez Bonnes pratiques de sécurité avec les bases de données à relation contenant-contenu.For more information, see Security Best Practices with Contained Databases.

En cas d'utilisateurs de base de données à relation contenant-contenu Azure SQL DatabaseAzure SQL Database, configurez l'accès à l'aide d'une règle de pare-feu de niveau base de données, et non d'une règle de pare-feu de niveau serveur.When using contained database users on Azure SQL DatabaseAzure SQL Database, configure access using a database-level firewall rule, instead of a server-level firewall rule. Pour plus d’informations, consultez sp_set_database_firewall_rule (Azure SQL Database).For more information, see sp_set_database_firewall_rule (Azure SQL Database).

Pour les utilisateurs de base de données à relation contenant-contenu Base de données SQLSQL Database et SQL Data WarehouseSQL Data Warehouse, SSMS peut prendre en charge l’authentification multifacteur.For Base de données SQLSQL Database and SQL Data WarehouseSQL Data Warehouse contained database users, SSMS can support Multi-Factor Authentication. Pour plus d’informations, consultez Prise en charge SSMS pour Azure AD MFA avec SQL Database et SQL Data Warehouse.For more information, see SSMS support for Azure AD MFA with SQL Database and SQL Data Warehouse.

AutorisationsPermissions

Nécessite l'autorisation ALTER ANY USER sur la base de données.Requires ALTER ANY USER permission on the database.

ExemplesExamples

A.A. Création d'un utilisateur de base de données basé sur un compte de connexion SQL ServerCreating a database user based on a SQL Server login

L'exemple suivant crée d'abord un compte de connexion SQL ServerSQL Server nommé AbolrousHazem, puis crée un utilisateur de base de données correspondant nommé AbolrousHazem dans AdventureWorks2012.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';  

Changez de base de données utilisateur.Change to a user database. Par exemple, dans SQL ServerSQL Server, utilisez l’instruction USE AdventureWorks2012.For example, in SQL ServerSQL Server use the USE AdventureWorks2012 statement. Dans Azure SQL Data WarehouseAzure SQL Data Warehouse et Parallel Data WarehouseParallel Data Warehouse, vous devez établir une nouvelle connexion à la base de données utilisateur.In Azure SQL Data WarehouseAzure 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. Création d'un utilisateur de base de données avec un schéma par défautCreating a database user with a default schema

L'exemple suivant crée d'abord une connexion serveur nommée WanidaBenshoof avec un mot de passe, puis crée un utilisateur de base de données correspondant nommé Wanida avec le schéma par défaut 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. Création d'un utilisateur de base de données à partir d'un certificatCreating a database user from a certificate

L'exemple suivant crée un utilisateur de base de données JinghaoLiu à partir du certificat CarnationProduction50.The following example creates a database user JinghaoLiu from certificate CarnationProduction50.

S'applique à: SQL Server 2008SQL Server 2008 jusqu'à SQL Server 2017SQL Server 2017.Applies 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. Création et utilisation d'un utilisateur sans connexionCreating and using a user without a login

L'exemple suivant crée un utilisateur de base de données CustomApp qui n'est mappé à aucune connexion SQL ServerSQL Server.The following example creates a database user CustomApp that does not map to a SQL ServerSQL Server login. L'exemple accorde ensuite à un utilisateur adventure-works\tengiz0 l'autorisation d'emprunter l'identité de l'utilisateur 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   

Pour utiliser les informations d'identification CustomApp, l'utilisateur adventure-works\tengiz0 exécute l'instruction suivante.To use the CustomApp credentials, the user adventure-works\tengiz0 executes the following statement.

EXECUTE AS USER = 'CustomApp' ;  
GO  

Pour revenir aux informations d'identification adventure-works\tengiz0, l'utilisateur exécute l'instruction suivante.To revert back to the adventure-works\tengiz0 credentials, the user executes the following statement.

REVERT ;  
GO  

E.E. Création d'un utilisateur de base de données à relation contenant-contenu avec mot de passeCreating a contained database user with password

L'exemple suivant crée un utilisateur de base de données à relation contenant-contenu avec mot de passe.The following example creates a contained database user with password. Cet exemple ne peut être exécuté que dans une base de données à relation contenant-contenu.This example can only be executed in a contained database.

S'applique à: SQL Server 2012 (11.x)SQL Server 2012 (11.x) jusqu'à SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017. Cet exemple fonctionne dans Base de données SQLSQL Database si DEFAULT_LANGUAGE est supprimé.This example works in Base de données SQLSQL 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. Création d'un utilisateur de base de données à relation contenant-contenu pour un compte de connexion de domaineCreating a contained database user for a domain login

L'exemple suivant crée un utilisateur de base de données à relation contenant-contenu pour une connexion nommée Fritz dans un domaine appelé Contoso.The following example creates a contained database user for a login named Fritz in a domain named Contoso. Cet exemple ne peut être exécuté que dans une base de données à relation contenant-contenu.This example can only be executed in a contained database.

S'applique à: SQL Server 2012 (11.x)SQL Server 2012 (11.x) jusqu'à SQL Server 2017SQL Server 2017.Applies 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. Création d'un utilisateur de base de données à relation contenant-contenu avec un SID spécifiqueCreating a contained database user with a specific SID

L'exemple suivant crée un utilisateur de base de données à relation contenant-contenu authentifié par SQL Server et nommé CarmenW.The following example creates a SQL Server authenticated contained database user named CarmenW. Cet exemple ne peut être exécuté que dans une base de données à relation contenant-contenu.This example can only be executed in a contained database.

S'applique à: SQL Server 2012 (11.x)SQL Server 2012 (11.x) jusqu'à SQL Server 2017SQL Server 2017.Applies 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. Création d’un utilisateur pour copier des données chiffréesCreating a user to copy encrypted data

L’exemple suivant crée un utilisateur qui peut copier des données protégées par la fonctionnalité Always Encrypted d’un ensemble de tables contenant des colonnes chiffrées vers un autre ensemble de tables avec des colonnes chiffrées (dans la même base de données ou dans une autre base de données).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). Pour plus d’informations, consultez Migrer des données sensibles protégées par Always Encrypted.For more information, see Migrate Sensitive Data Protected by Always Encrypted.

S’applique à : SQL Server 2016 (13.x)SQL Server 2016 (13.x) jusqu’à SQL Server 2017SQL Server 2017, Base de données SQLSQL Database.Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017, Base de données SQLSQL Database.

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

Étapes suivantesNext steps

Une fois l’utilisateur créé, envisagez d’ajouter l’utilisateur à un rôle de base de données à l’aide de l’instruction ALTER ROLE.Once the user is created, consider adding the user to a database role using the ALTER ROLE statement.
Vous pouvez également octroyer (GRANT) des autorisations sur un objet au rôle afin qu’il puisse accéder aux tables.You might also want to GRANT Object Permissions to the role so they can access tables. Pour obtenir des informations générales sur le modèle de sécurité SQL Server, consultez Autorisations.For general information about the SQL Server security model, see Permissions.

Voir aussiSee Also

Créer un utilisateur de base de données 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)
Bases de données à relation contenant-contenu Contained Databases
Connexion à la base de données SQL à l’aide de l’authentification Azure Active Directory Connecting to SQL Database By Using Azure Active Directory Authentication
Prise en main des autorisations du moteur de base de donnéesGetting Started with Database Engine Permissions