Partager via


CREATE USER (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Base de données SQL dans Microsoft Fabric

Ajoute un utilisateur à la base de données active. Les 13 types d’utilisateurs sont répertoriés avec un exemple de syntaxe la plus simple :

Remarque

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\Fritz];

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

  • Utilisateur basé sur un compte de connexion utilisant l'authentification SQL Server. CREATE USER Mary;

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

    Remarque

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

    Remarque

    Les connexions, et par conséquent les utilisateurs basés sur les connexions, ne sont pas prises en charge dans la base de données SQL dans Microsoft Fabric.

Utilisateurs qui s’authentifient auprès de la base de données : recommandé pour accroître la portabilité de votre base de données.
Toujours autorisé dans 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\Fritz];

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

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 CarnationProduction50;
  • 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 PacificSales09;

Conventions de la syntaxe Transact-SQL

Syntaxe

Syntaxe pour SQL Server, Azure SQL Database, 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 de la base de données SQL dans Microsoft Fabric

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 }

Syntaxe pour Parallel Data Warehouse

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

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 instruction d’un lot SQL, Azure SQL Database prend en charge la clause WITH LOGIN. 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.

WITH 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.

'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 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 principaux Microsoft Entra, la syntaxe CREATE USER nécessite :

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

    • CREATE USER [bob@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 aux connexions Microsoft Entra dans la base de données virtuelle master . Par exemple, CREATE USER [bob@contoso.com] FROM LOGIN [bob@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.

WITH PASSWORD = 'password'

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

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. Depuis 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.

WITHOUT 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, SQL Database, 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, SQL Database, 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> | <language name> | <language salias> }

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

Spécifie la langue par défaut du nouvel utilisateur. 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é. 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. 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.

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, s’applique uniquement aux utilisateurs disposant de mots de passe (authentification SQL Server) dans une base de données autonome. Spécifie le SID du nouvel utilisateur de base de données. Si cette option n’est pas sélectionnée, 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). 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. 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 d’objet Microsoft Entra de l’utilisateur/groupe. Si le principal Microsoft Entra est un principal de service (une application ou une identité managée), l’ID doit être un ID d’application (ou un ID 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. L’argument SID doit être utilisé avec TYPE.

TYPE = [ E | X ]

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

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.

Avertissement

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.

FROM EXTERNAL PROVIDER

S’applique à : 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 principal qui émet l’instruction CREATE USER est un principal d’utilisateur Microsoft Entra, le principal (ou le groupe du principal) doit se trouver dans le rôle 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, FROM EXTERNAL PROVIDER n’est pas autorisé si un principal émis 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.

WITH OBJECT_ID = 'objectid'

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

Spécifie l’ID d’objet Microsoft Entra. Si la OBJECT_ID valeur est spécifiée, la user_name peut être un alias défini par l’utilisateur formé à partir du nom d’affichage du principal d’origine 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 l’option WITH OBJECT_ID , consultez connexions Microsoft Entra et utilisateurs avec des noms d’affichage non uniques.

Remarque

Si le nom d’affichage du principal de service n’est pas un doublon, l’instruction CREATE LOGIN ou CREATE USER par défaut doit être utilisée. 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 à l’aide d’un suffixe pour identifier de manière unique le principal de service. L’extension WITH OBJECT_ID n’est pas prise en charge pour SQL Server.

Notes

S’il FOR LOGIN est omis, le nouvel utilisateur de base de données est mappé à la connexion SQL Server portant le même nom.

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

Si l'utilisateur possède un schéma par défaut, ce schéma par défaut est utilisé. 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é. 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. (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é.

Il est possible de définir DEFAULT_SCHEMA avant de créer le schéma vers lequel il pointe.

Vous ne pouvez pas spécifier DEFAULT_SCHEMA quand vous créez un utilisateur mappé à un certificat ou à une clé asymétrique.

La valeur de DEFAULT_SCHEMA est ignorée si l'utilisateur est membre du rôle serveur fixe sysadmin. Tous les membres du rôle serveur fixe sysadmin possèdent le schéma par défaut dbo.

La clause WITHOUT LOGIN crée un utilisateur qui n'est pas mappé à un compte de connexion SQL Server. Il peut se connecter à d'autres bases de données en tant qu'invité. Les autorisations peuvent être attribuées à cet utilisateur sans connexion et lorsque le contexte de sécurité est remplacé par un utilisateur sans connexion, les utilisateurs d’origine reçoivent les autorisations de l’utilisateur sans connexion. Consultez l’exemple D. Création et utilisation d’un utilisateur sans compte de 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 ce dernier existe déjà dans toutes les bases de données. Vous pouvez activer l'utilisateur invité en lui accordant l'autorisation CONNECT comme suit :

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.

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. Les connexions Microsoft Entra permettent aux principaux Microsoft Entra au niveau de la base de données d’être mappés aux connexions Microsoft Entra au niveau du 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];

Lors de la création de l’utilisateur dans la base de données Azure SQL, le login_name doit correspondre à une connexion Microsoft Entra existante, ou bien l’utilisation de la clause FROM EXTERNAL PROVIDER crée uniquement un utilisateur Microsoft Entra sans connexion dans la master base de données. Par exemple, cette commande crée un utilisateur contenu :

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

Résumé de syntaxe

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\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é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\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'

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\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’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

Sécurité

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 Database Engine Permissions.

Considérations spéciales pour les bases de données autonomes

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 basé sur un compte de connexion d’authentification SQL Server en utilisateur de base de données autonome avec mot de passe, consultez 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 SQL Server 2022 (16.x), SQL Database, Azure SQL Managed Instance et Azure Synapse Analytics contenaient des utilisateurs de base de données, SSMS prend en charge l’authentification multifacteur. Pour plus d’informations, consultez Utilisation de l’authentification multifacteur Microsoft Entra.

Autorisations

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

Autorisations pour SQL Server 2022 (et versions plus récentes)

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

Exemples

R. Création d'un utilisateur de base de données basé sur un compte de connexion SQL Server

L'exemple suivant crée d'abord un compte de connexion SQL Server nommé AbolrousHazem, puis crée un utilisateur de base de données correspondant nommé AbolrousHazem dans AdventureWorks2022.

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

Changez de base de données utilisateur. Par exemple, dans SQL Server, utilisez l’instruction USE AdventureWorks2022. Dans Azure Synapse Analytics et Analytics Platform System (PDW), vous devez établir une nouvelle connexion à la base de données utilisateur.

CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;  
GO   

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

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.

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

C. Création d'un utilisateur de base de données à partir d'un certificat

L'exemple suivant crée un utilisateur de base de données JinghaoLiu à partir du certificat CarnationProduction50.

S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures.

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

D. Création et utilisation d'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\tengiz0 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\tengiz0] ;  
GO   

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

EXECUTE AS USER = 'CustomApp' ;  
GO  

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

REVERT ;  
GO  

E. Création d'un utilisateur de base de données autonome avec mot de passe

L'exemple suivant crée un utilisateur de base de données autonome avec mot de passe. Cet exemple ne peut être exécuté que dans une base de données autonome.

S’applique à : SQL Server 2012 (11.x) et versions ultérieures. Cet exemple fonctionne dans SQL Database si DEFAULT_LANGUAGE est supprimé.

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

F. Création d'un utilisateur de base de données autonome pour un compte de connexion de domaine

L'exemple suivant crée un utilisateur de base de données autonome pour une connexion nommée Fritz dans un domaine appelé Contoso. Cet exemple ne peut être exécuté que dans une base de données autonome.

S’applique à : SQL Server 2012 (11.x) et versions ultérieures.

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

G. Création d'un utilisateur de base de données autonome avec un SID spécifique

L'exemple suivant crée un utilisateur de base de données autonome authentifié par SQL Server et nommé CarmenW. Cet exemple ne peut être exécuté que dans une base de données autonome.

S’applique à : SQL Server 2012 (11.x) et versions ultérieures.

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

H. Création d’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 [Chin]   
WITH   
      DEFAULT_SCHEMA = dbo  
    , ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;  

I. Créer un utilisateur Microsoft Entra à partir d’une connexion Microsoft Entra dans Azure SQL

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

Connectez-vous à votre serveur logique dans Azure ou SQL Managed Instance à l’aide d’une connexion Microsoft Entra accordée au sysadmin rôle dans SQL Managed Instance ou loginmanager au rôle dans SQL Database. Le script T-SQL suivant crée un utilisateur bob@contoso.comMicrosoft Entra, à partir de la connexion bob@contoso.com. Cette connexion a été créée dans l’exemple CREATE LOGIN.

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

Important

Lors de la création d’un utilisateur à partir d’une connexion Microsoft Entra, spécifiez le user_name comme login_nameà partir de 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 [bob@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 bob@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 [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO

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

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é bob@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 = 'bob@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.

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 @group_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 [@groupName] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);

Étapes suivantes

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.
Vous pouvez également octroyer (GRANT) des autorisations sur un objet au rôle afin qu’il puisse accéder aux tables. Pour obtenir des informations générales sur le modèle de sécurité SQL Server, consultez Autorisations.