CREATE USER (Transact-SQL)
Ajoute un utilisateur à la base de données active.
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.
Attention |
|---|
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 entités de sécurité et des schémas introduite dans SQL Server 2005 Pour plus d'informations sur les affichages catalogue, consultez Affichages catalogue (Transact-SQL). |
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 AdventureWorks.
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks;
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 AdventureWorks;
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 AdventureWorks;
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 AdventureWorks ; 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
