CREATE USER (Transact-SQL)

Ajoute un utilisateur à la base de données active.

Icône Lien de rubriqueConventions de la syntaxe Transact-SQL

Syntaxe

CREATE USER user_name 
    [ { { FOR | FROM }
      { 
        LOGIN login_name 
        | CERTIFICATE cert_name 
        | ASYMMETRIC KEY asym_key_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 correspond à sysname. Il peut comporter jusqu'à 128 caractères.

  • LOGIN login_name
    Spécifie la connexion SQL Server pour laquelle l'utilisateur de base de données est créé. login_name doit être une connexion valide pour le serveur. Lorsque cette connexion SQL Server entre dans la base de données, elle prend le nom et l'ID de l'utilisateur de base de données que vous créez.

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

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

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

  • WITHOUT LOGIN
    Indique que l'utilisateur ne doit pas être mappé à une connexion existante.

Notes

Si vous omettez FOR LOGIN, le nouvel utilisateur de base de données est associé à la connexion SQL Server du même nom.

Si DEFAULT_SCHEMA n'est pas défini, l'utilisateur de base de données utilise dbo comme schéma par défaut. La valeur de DEFAULT_SCHEMA peut désigner un schéma qui n'existe pas encore dans la base de données. 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 lorsque vous créez un utilisateur mappé à un groupe Windows, à un certificat ou à une clé asymétrique.

Important

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 noms des utilisateurs mappés à des connexions SQL Server, des certificats ou des clés asymétriques ne doivent pas contenir de 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 visibles dans l'affichage catalogue sys.database_principals.

AttentionAttention

Avec l'arrivée de SQL Server 2005, le comportement des schémas a changé. Ainsi, le code qui suppose que les schémas sont équivalents aux utilisateurs de base de données peut ne plus renvoyer des résultats corrects. Vous ne devez pas recourir aux anciens affichages catalogue, notamment sysobjects, dans une base de données où une des instructions DDL suivantes a été utilisée : CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. Dans ces bases de données, vous devez utiliser les nouveaux affichages catalogue. Les nouveaux affichages catalogue tiennent compte de la séparation des principaux et des schémas introduite dans SQL Server 2005 Pour plus d'informations sur les affichages catalogue, consultez Affichages catalogue (Transact-SQL).

Autorisations

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

Exemples

A. Création d'un utilisateur de base de données

L'exemple suivant crée d'abord une connexion serveur nommée AbolrousHazem avec un mot de passe, puis crée un utilisateur de base de données correspondant nommé AbolrousHazem dans AdventureWorks2008R2.

CREATE LOGIN AbolrousHazem 
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
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.

USE AdventureWorks2008R2;
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é à aucune connexion SQL Server. L'exemple accorde ensuite à un utilisateur adventure-works\tengiz0 l'autorisation d'emprunter l'identité de l'utilisateur CustomApp.

USE AdventureWorks2008R2 ;
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