CREATE USER (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsBase de données SQL dans Microsoft Fabric

Ajoute un utilisateur à la base de données active. La liste suivante présente les 13 types d’utilisateurs ainsi qu’un échantillon de la syntaxe la plus basique :

Note

Bien que Microsoft Entra ID soit le nouveau nom d’Azure Active Directory (Azure AD) pour empêcher l’interruption des environnements existants, Azure AD reste toujours dans certains éléments codés en dur, tels que les champs d’interface utilisateur, les fournisseurs de connexions, les codes d’erreur et cmdlets. Dans cet article, les deux noms sont interchangeables.

Utilisateurs basés sur les connexions dans master

  • Utilisateur basé sur un compte de connexion basé sur un compte Windows Active Directory. CREATE USER [Contoso\test];

  • Utilisateur basé sur un compte de connexion basé sur un groupe Windows. CREATE USER [Contoso\Sales];

  • Utilisateur basé sur un identifiant utilisant l’authentification SQL Server. CREATE USER Mary;

  • Utilisateur basé sur une connexion Microsoft Entra. CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com]

    Note

    Les principaux de serveur Microsoft Entra (connexions) sont actuellement en préversion publique pour Azure SQL Database.

    Note

    La base de données SQL dans Microsoft Fabric ne prend pas en charge les connexions ni les utilisateurs basés sur les connexions.

Utilisateurs qui s’authentifient dans la base de données - Utilisez des utilisateurs contenus pour rendre votre base de données plus portable.
Toujours autorisé dans Azure SQL Database. Autorisé uniquement dans une base de données autonome dans SQL Server.

  • Utilisateur basé sur un utilisateur Windows qui ne dispose d'aucun compte de connexion. CREATE USER [Contoso\test];

  • Utilisateur basé sur un groupe Windows qui ne dispose d'aucun compte de connexion. CREATE USER [Contoso\Sales];

  • Utilisateur dans SQL Database ou Azure Synapse Analytics basé sur un utilisateur Microsoft Entra. CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;

  • Utilisateur de base de données autonome avec mot de passe. (Non disponible dans Azure Synapse Analytics.) CREATE USER Mary WITH PASSWORD = '********';

Utilisateurs basés sur des principaux Windows qui se connectent via des comptes de connexion de groupe Windows

  • Utilisateur basé sur un utilisateur Windows qui ne dispose d'aucun compte de connexion, mais peut se connecter au Moteur de base de données via une appartenance à un groupe Windows. CREATE USER [Contoso\test];

  • 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ées via l’appartenance à un autre groupe Windows. CREATE USER [Contoso\test];

Utilisateurs qui ne peuvent pas s’authentifier : ces utilisateurs ne peuvent pas se connecter à SQL Server ou SQL Database.

  • Utilisateur sans compte de connexion. Impossible de se connecter, mais peut recevoir des autorisations. CREATE USER CustomApp WITHOUT LOGIN;
  • Utilisateur basé sur un certificat. Impossible de se connecter, mais peut recevoir des autorisations et signer des modules. CREATE USER TestProcess FOR CERTIFICATE Contoso50;
  • Utilisateur basé sur une clé asymétrique. Impossible de se connecter, mais peut recevoir des autorisations et signer des modules. CREATE User TestProcess FROM ASYMMETRIC KEY Contoso09;

Conventions de la syntaxe Transact-SQL

Syntax

Syntaxe pour SQL Server, Azure SQL Database et Azure SQL 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> [ , ... ]
    | Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH OBJECT_ID = 'objectid' ]
    }

 [ ; ]

-- 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 Microsoft Entra logins for Azure SQL 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 ] ]

Syntaxe sur Azure Synapse Analytics

CREATE USER user_name
    [ { { FOR | FROM } { LOGIN login_name }
      | WITHOUT LOGIN
    ]
    [ WITH DEFAULT_SCHEMA = schema_name ]
[;]

CREATE USER Microsoft_Entra_principal FROM EXTERNAL PROVIDER
    [ WITH DEFAULT_SCHEMA = schema_name ]
[;]

Syntaxe pour la base de données SQL dans Microsoft Fabric et Azure SQL Database

CREATE USER
    {
    Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH <limited_options_list> [ , ... ] ]
    | Microsoft_Entra_principal WITH <options_list> [ , ... ]
    }
 [ ; ]

-- Users that cannot authenticate
CREATE USER user_name
    {    WITHOUT LOGIN [ WITH DEFAULT_SCHEMA = schema_name ]
       | { FOR | FROM } CERTIFICATE cert_name
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name
    }
 [ ; ]

<limited_options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | OBJECT_ID = 'objectid'

<options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | SID = sid
    | TYPE = { X | E }

Arguments

user_name

Spécifie le nom qui identifie l'utilisateur dans cette base de données. user_name est de type sysname. Il peut comporter jusqu'à 128 caractères. 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é.

LOGIN login_name

Spécifie le compte de connexion pour lequel l'utilisateur de base de données est créé. login_name doit être un compte de connexion valide sur le serveur. Il peut s’agir d’une connexion basée sur un principal Windows (utilisateur ou groupe), une connexion à l’aide de l’authentification SQL Server ou d’une connexion à l’aide d’un principal Microsoft Entra (utilisateur, groupe ou application). Quand ce compte de connexion SQL 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. Quand vous créez un compte de connexion mappé à partir d’un principal Windows, utilisez le format [<domainName>\<loginName>]. Pour obtenir des exemples, consultez Résumé de syntaxe.

Si l’instruction CREATE USER est la seule dans un lot SQL, Azure SQL Database prend en charge la clause WITHLOGIN. Si l’instruction CREATE USER n’est pas la seule dans un lot SQL ou s’exécute en SQL dynamique, la clause WITH LOGIN n’est pas prise en charge.

AVEC DEFAULT_SCHEMA = schema_name

Spécifie le premier schéma recherché par le serveur lorsqu’il résout les noms d’objets pour cet utilisateur de base de données.

'windows_principal'

Spécifie le principal Windows pour lequel l'utilisateur de la base de données est créé. windows_principal peut être un utilisateur Windows ou un groupe Windows. L’utilisateur est créé même si le windows_principal ne dispose pas de compte de connexion. Lors de la connexion à SQL Server, si windows_principal ne dispose pas d’un compte de connexion, le principal Windows doit s’authentifier au niveau du Moteur de base de données 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 autonome comme catalogue initial. Quand vous créez un utilisateur à partir d’un principal Windows, utilisez le format [<domainName>\<loginName>]. Pour obtenir des exemples, consultez Résumé de syntaxe. Les utilisateurs basés sur des utilisateurs Active Directory sont limités aux noms de moins de 21 caractères.

'Microsoft_Entra_principal'

S’applique à : SQL Server 2022 (16.x) et versions ultérieures, SQL Database, SQL Managed Instance, Azure Synapse Analytics, base de données SQL dans Microsoft Fabric

Spécifie le principal Microsoft Entra pour lequel l’utilisateur de base de données est en cours de création. Le Microsoft_Entra_principal peut être un utilisateur Microsoft Entra, un groupe Microsoft Entra ou une application Microsoft Entra. (Les utilisateurs De Microsoft Entra ne peuvent pas avoir de connexions d’authentification Windows dans SQL Database ; seuls les utilisateurs de base de données.) La chaîne de connexion doit spécifier la base de données autonome comme catalogue initial.

Pour les principes Microsoft Entra, la CREATE USER syntaxe exige :

  • UserPrincipalName de l’objet Microsoft Entra pour les utilisateurs de Microsoft Entra.

    • CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
  • Les principaux de serveur Microsoft Entra (connexions) introduisent la création d’utilisateurs mappés à des connexions Microsoft Entra dans la master base de données. Par exemple, CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com];

  • Les utilisateurs et principaux de service Microsoft Entra (applications) membres de plus de 2048 groupes de sécurité Microsoft Entra ne sont pas pris en charge pour se connecter aux bases de données dans Azure SQL Database, Azure SQL Managed Instance ou Azure Synapse.

  • DisplayName de l’objet Microsoft Entra pour les groupes Microsoft Entra et Microsoft Entra Applications. Avec le groupe de sécurité Nurses, on utiliserait :

    • CREATE USER [Nurses] FROM EXTERNAL PROVIDER;

Pour plus d’informations, consultez Connexion à SQL Database avec l’authentification Microsoft Entra.

Pour plus d’informations sur l’authentification Microsoft Entra dans SQL Server, consultez tutoriel : Configurer l’authentification Microsoft Entra pour SQL Server activée par Azure Arc.

AVEC MOT de PASSE = 'mot de passe'

S’applique à : SQL Server 2012 (11.x) et versions ultérieures, base de données SQL.

Peut être utilisé uniquement dans une base de données autonome. Spécifie le mot de passe de l'utilisateur en cours de création.

À partir de SQL Server 2012 (11.x), SQL Server et Azure SQL Database utilisaient un hachage SHA-512 combiné à un sel aléatoire et unique de 32 bits. Cette méthode l’a rendu statistiquement impossible pour les attaquants de déduire les mots de passe.

SQL Server 2025 (17.x) introduit un algorithme de hachage itéré, RFC2898, également appelé fonction de dérivation de clé basée sur mot de passe (PBKDF). Cet algorithme utilise toujours SHA-512, mais hachage le mot de passe plusieurs fois (100 000 itérations), ralentissant considérablement les attaques par force brute. Cette modification améliore la protection par mot de passe en réponse aux menaces de sécurité en constante évolution et aide les clients à se conformer aux directives NIST SP 800-63b. Cette amélioration de la sécurité utilise un algorithme de hachage plus fort, qui peut légèrement augmenter le temps de connexion pour les connexions d’authentification SQL. L’impact est généralement inférieur dans les environnements avec le regroupement de connexions, mais peut être plus visible dans les scénarios sans regroupement ni où la latence de connexion est étroitement surveillée.

SANS LOGIN

Indique que l'utilisateur ne doit pas être mappé à un compte de connexion existant.

CERTIFICATE cert_name

S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures, base de données SQL, base de données SQL dans Microsoft Fabric

Spécifie le certificat pour lequel l'utilisateur de base de données est créé.

ASYMMETRIC KEY asym_key_name

S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures, base de données SQL, base de données SQL dans Microsoft Fabric

Spécifie la clé asymétrique pour laquelle l'utilisateur de base de données est créé.

DEFAULT_LANGUAGE = { NONE | <lcid> | <nom> de langue | <langue salias> }

S’applique à : SQL Server 2012 (11.x) et versions ultérieures, base de données SQL

Spécifie la langue par défaut du nouvel utilisateur. Si vous spécifiez une langue par défaut pour l’utilisateur puis changez la langue par défaut de la base de données, la langue par défaut de l’utilisateur reste celle spécifiée. Si vous ne spécifiez pas de langue par défaut, l’utilisateur obtient la langue par défaut de la base de données. Si vous ne spécifiez pas de langue par défaut pour l’utilisateur et que vous modifiez ensuite la langue par défaut de la base de données, la langue par défaut de l’utilisateur devient la nouvelle langue par défaut de la base de données.

Important

DEFAULT_LANGUAGE est utilisé uniquement pour un utilisateur de base de données autonome.

SID = sid

S’applique à : SQL Server 2012 (11.x) et versions ultérieures, ainsi qu’à la base de données SQL dans Microsoft Fabric.

Dans SQL Server 2012 (11.x) et versions ultérieures, cela ne s’applique qu’aux utilisateurs disposant de mots de passe (authentification SQL Server) dans une base de données contenue. Spécifie le SID du nouvel utilisateur de base de données. Si vous ne sélectionnez pas cette option, SQL Server attribue automatiquement un SID. Utilisez le paramètre SID pour créer des utilisateurs dans plusieurs bases de données qui ont la même identité (SID). Cette fonctionnalité est utile lors de la création d’utilisateurs dans plusieurs bases de données pour se préparer au basculement Always On. Pour déterminer le SID d’un utilisateur, interrogez sys.database_principals.

Dans la base de données SQL dans Microsoft Fabric, sid doit être un ID valide du principal Microsoft Entra spécifié. Si le principal est un utilisateur ou un groupe, l’ID doit être un ID objet Microsoft Entra de l’utilisateur ou du groupe. Si le principal Microsoft Entra est un principal de service (une application ou une identité gérée), l’ID doit être un ID d’application ou un identifiant client. L’ID spécifié doit être une binary(16) valeur. Le Moteur de base de données ne valide pas l’ID spécifié dans Microsoft Entra. Si vous utilisez cet SID argument, vous devez inclure TYPE.

TYPE = [ E | X ]

S’applique à : base de données SQL dans Microsoft Fabric et Azure SQL Database.

Spécifie le type d’un principal Microsoft Entra. E indique que le principal est un utilisateur ou un principal de service (une application ou une identité managée). X indique que le principal est un groupe.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, SQL Database.

Supprime les contrôles de métadonnées de chiffrement sur le serveur dans les opérations de copie en bloc. 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. La valeur par défaut est OFF.

Warning

Une utilisation incorrecte de cette option peut entraîner une altération des données. Pour plus d’informations, consultez Migrer des données sensibles protégées par Always Encrypted.

DE LA PART D’UN FOURNISSEUR EXTERNE

S’applique à : SQL Server 2022 (16.x) et versions ultérieures, SQL Database, Azure SQL Managed Instance, base de données SQL dans Microsoft Fabric

Spécifie que le principal est destiné à l’authentification Microsoft Entra. SQL Server valide automatiquement le nom de principal fourni dans Microsoft Entra.

Si le mandant émettant la CREATE USER déclaration est un user principal de Microsoft Entra, le principal ou le groupe du principal doit occuper le rôle de lecteurs d'annuaire dans Microsoft Entra.

Dans SQL Database et Azure SQL Managed Instance, si le principal qui émet l’instruction CREATE USER est un principal de service, l’identité du serveur de base de données ou de l’instance managée doit se trouver dans le rôle Lecteurs d’annuaire dans Microsoft Entra.

Dans la base de données SQL dans Microsoft Fabric, vous ne pouvez pas utiliser FROM EXTERNAL PROVIDER si un principal émetteur CREATE USER est un principal de service dans Microsoft Entra. Les principaux de service doivent utiliser des arguments TYPE et SID pour créer des utilisateurs pour les principaux Microsoft Entra.

AVEC OBJECT_ID = « objectid »

S’applique à : SQL Server 2025 (17.x) et versions ultérieures, SQL Database, Azure SQL Managed Instance, base de données SQL dans Microsoft Fabric

Spécifie l’ID d’objet Microsoft Entra. Si vous spécifiez le OBJECT_ID, le user_name peut être un alias défini par l’utilisateur formé à partir du nom principal d’affichage original avec un suffixe ajouté. Le user_name doit être un nom unique dans la sys.database_principals vue et respecter toutes les autres sysname limitations. Pour plus d’informations sur l’utilisation de cette WITH OBJECT_ID option, voir les connexions Microsoft Entra et les utilisateurs avec des noms d’affichage non uniques.

Note

À partir de SQL Server 2025 (17.x), l’option WITH OBJECT_ID est prise en charge pour les connexions Microsoft Entra et les utilisateurs avec des noms d’affichage uniques.

Si le nom d’affichage du principal de service n’est pas un doublon, utilisez la déclaration par défaut CREATE LOGIN ou CREATE USER l’instruction. L’extension WITH OBJECT_ID est un élément de réparation de dépannage implémenté pour une utilisation avec des principaux de service non uniques. L’utilisation avec un principal de service unique n’est pas recommandée. L’utilisation de l’extension WITH OBJECT_ID pour un principal de service sans ajouter de suffixe s’exécute correctement, mais il n’est pas évident pour quel principal de service la connexion ou l’utilisateur a été créé. Il est recommandé de créer un alias en utilisant un suffixe pour identifier de manière unique le principal du service.

Remarks

Si vous omets FOR LOGIN, le nouvel utilisateur de la base de données correspond à la connexion SQL Server portant le même nom.

Le schéma par défaut est le premier schéma que le serveur recherche lorsqu’il résout les noms des objets pour cet utilisateur de base de données. Sauf indication contraire, le schéma par défaut est le propriétaire des objets créés par cet utilisateur de base de données.

Si l’utilisateur a un schéma par défaut, le serveur utilise ce schéma par défaut. Si l’utilisateur n’a pas de schéma par défaut mais fait partie d’un groupe qui en a un, le serveur utilise le schéma par défaut du groupe. Si l'utilisateur n'a pas de schéma par défaut et appartient à plusieurs groupes, le serveur utilise le schéma par défaut configuré du groupe Windows avec le plus bas principal_id parmi les groupes ayant un schéma par défaut explicitement défini. Vous ne pouvez pas explicitement sélectionner un des schémas par défaut disponibles comme schéma préféré. Si le serveur ne peut pas déterminer un schéma par défaut pour un utilisateur, il utilise ce dbo schéma.

Vous pouvez définir DEFAULT_SCHEMA avant de créer le schéma vers lequel il pointe.

Vous ne pouvez pas spécifier DEFAULT_SCHEMA lors de la création d’un utilisateur associé à un certificat ou à une clé asymétrique.

Le serveur ignore la valeur de DEFAULT_SCHEMA si l’utilisateur est membre du sysadmin rôle serveur fixe. Tous les membres du sysadmin rôle serveur fixe ont un schéma par défaut de dbo.

La WITHOUT LOGIN clause crée un utilisateur qui n’est pas mappé à une connexion authentifiée par SQL. Il peut se connecter à d'autres bases de données en tant qu'invité. Vous pouvez attribuer des permissions à cet utilisateur sans connexion. Lorsque le contexte de sécurité change pour un utilisateur sans connexion, l’utilisateur original reçoit les permissions de l’utilisateur sans connexion. Pour un exemple, voir D. Créer et utiliser un utilisateur sans connexion.

Seuls les utilisateurs mappés à des principaux Windows peuvent contenir la barre oblique inverse ( \ ).

Vous ne pouvez pas utiliser CREATE USER pour créer un utilisateur invité car cet utilisateur est déjà présent dans chaque base de données. Vous pouvez activer l’utilisateur invité en lui CONNECT accordant la permission, comme indiqué :

GRANT CONNECT TO guest; 
GO  

Vous pouvez consulter les informations sur les utilisateurs de la base de données dans la vue catalogue sys.database_principals .

Utilisez l’extension FROM EXTERNAL PROVIDER de syntaxe pour créer des connexions Microsoft Entra au niveau du serveur dans Azure SQL Database et Azure SQL Managed Instance. En utilisant les identifiants Microsoft Entra, vous pouvez associer les principes Microsoft Entra au niveau de la base de données aux identifiants Microsoft Entra au niveau serveur. Pour créer un utilisateur Microsoft Entra à partir d’une connexion Microsoft Entra, utilisez la syntaxe suivante :

CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];

Lorsque vous créez l’utilisateur dans la base de données Azure SQL, le login_name doit correspondre à un Microsoft Entra de connexion existant. Sinon, l’utilisation de cette FROM EXTERNAL PROVIDER clause ne crée qu’un utilisateur Microsoft Entra sans connexion dans la master base de données. Par exemple, la commande suivante crée un utilisateur contenu :

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

Résumé syntaxique

Utilisateurs basés sur les connexions dans master

La liste suivante affiche la syntaxe possible pour les utilisateurs basés sur des comptes de connexion. Les options de schéma par défaut ne sont pas répertoriées.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTest
  • 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ées

La liste suivante affiche la syntaxe possible pour les utilisateurs qui peuvent être utilisés uniquement dans une base de données autonome. Les utilisateurs créés ne seront associés à aucun compte de connexion dans la base de données Master. Les options de langue et de schéma par défaut ne sont pas répertoriées.

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ées.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Test WITH PASSWORD = '<strong password>'

Utilisateurs basés sur des principaux Windows sans connexion dans la master base de données système

La liste suivante montre la syntaxe possible pour les utilisateurs qui ont accès au Moteur de base de données via un groupe Windows, mais qui n’ont pas de connexion dans la master base de données système. Cette syntaxe peut être utilisée dans tous les types de bases de données. Les options de langue et de schéma par défaut ne sont pas répertoriées.

Cette syntaxe est similaire aux utilisateurs basés sur les connexions dans master, mais cette catégorie d’utilisateur n’a pas de connexion master. L’utilisateur doit avoir accès au Moteur de base de données via un compte de connexion de groupe Windows.

Cette syntaxe est semblable à celle utilisée pour les utilisateurs de base de données autonome basés sur des principaux Windows, mais cette catégorie d’utilisateurs n’obtient pas de nouvel accès au Moteur de base de données.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTest
  • 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’authentifier

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

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. Après la création d’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. Pour plus d’informations sur la conception d’un système d’autorisations, voir Getting Started with Moteur de base de données Permissions.

Considérations particulières pour les bases de données contenues

Lorsque vous vous connectez à une base de données autonome, si l’utilisateur n’a pas de connexion dans la master base de données, l’chaîne de connexion doit inclure le nom de la base de données autonome comme catalogue initial. Le paramètre de catalogue initial est toujours requis pour un utilisateur de base de données autonome avec mot de passe.

Dans une base de données autonome, la création d’utilisateurs permet de séparer la base de données de l’instance du Moteur de base de données afin que la base de données puisse être déplacée facilement vers une autre instance de SQL Server. Pour plus d’informations, consultez Bases de données autonomes et Utilisateurs de base de données autonome - Rendre votre base de données portable. Pour changer un utilisateur de base de données d’un utilisateur basé sur une connexion authentifiée SQL à un utilisateur de base de données contenu avec mot de passe, voir sp_migrate_user_to_contained (Transact-SQL).

Dans une base de données autonome, les utilisateurs n’ont pas besoin de se connecter à la master base de données. Les administrateurs du Moteur de base de données doivent comprendre que l'accès à une base de données autonome peut être accordé au niveau de la base de données, plutôt qu'au niveau du Moteur de base de données. Pour plus d'informations, consultez Meilleures pratiques de sécurité recommandées avec les bases de données autonomes.

En cas d'utilisateurs de base de données autonome Azure 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. Pour plus d’informations, consultez sp_set_database_firewall_rule (Azure SQL Database).

Pour les utilisateurs de bases de données contenant SQL Server 2022 (16.x), Azure SQL Database, Azure SQL Managed Instance et Azure Synapse Analytics, SSMS prend en compte l’authentification multifacteur. Pour plus d’informations, consultez Utilisation de l’authentification multifacteur Microsoft Entra.

Permissions

Nécessite l’autorisation ALTER ANY USER sur la base de données.

Autorisations pour SQL Server 2022 et versions ultérieures

Requiert l'autorisation CREATE USER sur la base de données.

Examples

A. Créez un utilisateur de base de données basé sur une connexion SQL Server

L’exemple suivant crée d’abord un identifiant SQL Server nommé test dans la master base de données, puis crée un utilisateur test de base de données correspondant dans AdventureWorks2025.

--Connect to the master database
CREATE LOGIN test   
    WITH PASSWORD = '<strong password>';  

Changez de base de données utilisateur. Par exemple, dans SQL Server, utilisez l’instruction USE [AdventureWorks2022]. Dans Azure SQL Database, la USE déclaration n'est pas disponible. À la place, connectez-vous directement à la base de données prévue et exécutez le reste de l’échantillon de code. Cet exemple basé sur la connexion ne s'applique pas à la base de données SQL dans Microsoft Fabric, qui ne prend pas en charge les connexions ni les utilisateurs basés sur les connexions.

--Connect to a user database
CREATE USER test FOR LOGIN test;
GO   

B. Créer un utilisateur de base de données avec un schéma par défaut

L’exemple suivant crée d’abord un identifiant serveur nommé testlogin avec un mot de passe que vous fournissez, puis crée un utilisateur testuserde base de données correspondant , avec le schéma Marketingpar défaut .

--Connect to the master database
CREATE LOGIN testlogin
    WITH PASSWORD = '<strong password>';  

Changez de base de données utilisateur. Par exemple, dans SQL Server, utilisez l’instruction USE [AdventureWorks2022]. Dans Azure SQL Database et SQL Database dans Microsoft Fabric, l'USEinstruction n'est pas disponible. À la place, connectez-vous directement à la base de données prévue et exécutez le reste de l’échantillon de code.

--Connect to a user database
CREATE USER testuser FOR LOGIN testlogin
    WITH DEFAULT_SCHEMA = Marketing;  

C. Créer un utilisateur de base de données à partir d’un certificat

L'exemple suivant crée un utilisateur de base de données test à partir du certificat Contoso_Cert. Pour plus d’informations, consultez CREATE CERTIFICATE (Transact-SQL).

USE AdventureWorks2022;  
CREATE CERTIFICATE Contoso_Cert  
    ENCRYPTION BY PASSWORD = '<strong password>'  
    WITH SUBJECT = 'Contoso Facility Supervisors',
    EXPIRY_DATE = '11/11/2011';  
GO  
CREATE USER test FOR CERTIFICATE Contoso_Cert;  
GO   

D. Créer et utiliser un utilisateur sans connexion

L’exemple suivant crée un utilisateur de base de données CustomApp qui n’est mappé à aucun compte de connexion SQL Server. L'exemple accorde ensuite à un utilisateur adventure-works\test l'autorisation d'emprunter l'identité de l'utilisateur CustomApp.

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

Pour utiliser les informations d'identification CustomApp, l'utilisateur adventure-works\test exécute l'instruction suivante.

EXECUTE AS USER = 'CustomApp' ;  
GO  

Pour revenir aux informations d'identification adventure-works\test, l'utilisateur exécute l'instruction suivante.

REVERT ;  
GO  

E. Créez un utilisateur de base de données contenu avec un mot de passe

L'exemple suivant crée un utilisateur de base de données autonome avec mot de passe. Vous ne pouvez exécuter cet exemple que dans une base de données contenue.

Cet exemple fonctionne dans la base de données SQL si vous supprimez DEFAULT_LANGUAGE.

USE AdventureWorks2022;  
GO  
CREATE USER test  
WITH PASSWORD='<password>'
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

F. Créez un utilisateur de base de données contenu pour une connexion de domaine

L’exemple suivant crée un utilisateur de base de données contenu pour un identifiant nommé test dans un domaine nommé Contoso. Vous ne pouvez exécuter cet exemple que dans une base de données contenue.

USE AdventureWorks2022;
GO  
CREATE USER [Contoso\test] ;  
GO   

G. Créez un utilisateur de base de données contenu avec un SID spécifique

L’exemple suivant crée un utilisateur de base de données contenu authentifié par SQL Server nommé TestUser. Vous ne pouvez exécuter cet exemple que dans une base de données contenue.

USE AdventureWorks2022;  
GO  
CREATE USER TestUser WITH PASSWORD = '<strong password>'  
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;

H. Créer un utilisateur pour copier des données chiffrées

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). Pour plus d’informations, consultez Migrer des données sensibles protégées par Always Encrypted.

S’applique à : SQL Server 2016 (13.x) et versions ultérieures, SQL Database.

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

I. Créez un utilisateur Microsoft Entra à partir d’une connexion Microsoft Entra dans Azure SQL Database et Azure SQL Managed Instance

Pour créer un utilisateur Microsoft Entra à partir d’une connexion Microsoft Entra, utilisez la syntaxe suivante.

Connectez-vous à votre serveur logique Azure SQL Database ou à votre SQL Managed Instance via une connexion Microsoft Entra. Utilisez la connexion administrateur serveur ou une connexion qui fait partie du loginmanager rôle dans la base de données SQL, ou qui a obtenu le sysadmin rôle dans SQL Managed Instance.

Le script T-SQL suivant crée un utilisateur test@contoso.comMicrosoft Entra, à partir de la connexion test@contoso.com. Cette connexion a été créée dans l’exemple CREATE LOGIN .

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

Important

Lors de la création d’une USER connexion à partir d’un Microsoft Entra, spécifiez le user_name comme étant le même login_name depuis LOGIN.

La création d’un utilisateur Microsoft Entra en tant que groupe à partir d’une connexion Microsoft Entra qui est un groupe est prise en charge.

CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];

GO

Vous pouvez également créer un utilisateur Microsoft Entra à partir d’une connexion Microsoft Entra qui est un groupe.

CREATE USER [test@contoso.com] FROM LOGIN [MS Entra group];

GO

J. Créer un utilisateur de base de données autonome à partir d’un principal Microsoft Entra

La syntaxe suivante crée un utilisateur test@contoso.comMicrosoft Entra, dans une base de données sans connexion associée.master Le Moteur de base de données valide l’utilisateur spécifié dans Microsoft Entra.

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

Dans la base de données SQL dans Microsoft Fabric, vous ne pouvez pas utiliser FROM EXTERNAL PROVIDER si un principal émetteur CREATE USER est un principal de service dans Microsoft Entra.

K. Créer un utilisateur de base de données autonome à partir d’un principal Microsoft Entra sans validation

S’applique à : base de données SQL dans Microsoft Fabric et Azure SQL Database

Les exemples de cette section créent des utilisateurs de base de données pour les principaux Microsoft Entra, sans valider les noms de principaux dans Microsoft Entra.

L’exemple T-SQL suivant crée un utilisateur de base de données pour l’utilisateur Microsoft Entra, nommé test@contoso.com. Remplacez <unique identifier sid> par le SID du nouvel utilisateur par l’ID d’objet de l’utilisateur Microsoft Entra.

DECLARE @principal_name SYSNAME = 'test@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);

L’exemple suivant crée un utilisateur de base de données pour le principal du service Microsoft Entra, nommé HRApp. Remplacez <unique identifier sid> le SID du nouvel utilisateur par l’ID client du principal de service dans Microsoft Entra.

Note

Utilisez l’identifiant client, et non l’identifiant de l’objet, lors de la spécification d’un principal de service Microsoft Entra, User-Assigned Identité Gérée (UAMI) ou System-Assigned Identité Gérée (SAMI).

DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);

L’exemple suivant crée un utilisateur de base de données pour le groupe Microsoft Entra, nommé HR. Remplacez <unique identifier sid> par le SID du nouvel utilisateur par l’ID d’objet du groupe.

DECLARE @principal_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);