ALTER USER (Transact-SQL)

Renomme un utilisateur de base de données ou change son schéma par défaut.

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

Syntaxe

ALTER USER userName  
     WITH <set_item> [ ,...n ]

<set_item> ::= 
     NAME = newUserName 
     | DEFAULT_SCHEMA = schemaName
     | LOGIN = loginName

Arguments

  • userName
    Spécifie le nom qui identifie l'utilisateur dans cette base de données.

  • LOGIN **=**loginName
    Remappe un utilisateur à une autre connexion en modifiant l'identificateur de sécurité (SID) de l'utilisateur de manière à ce qu'il corresponde au SID de la connexion.

  • NAME **=**newUserName
    Spécifie le nouveau nom de l'utilisateur. newUserName ne doit pas exister dans la base de données active.

  • DEFAULT_SCHEMA **=**schemaName
    Spécifie le premier schéma que le serveur va interroger pour résoudre les noms des objets associés à cet utilisateur.

Notes

Si DEFAULT_SCHEMA n'est pas défini, l'utilisateur sera associé au schéma par défaut dbo. La valeur de DEFAULT_SCHEMA peut désigner un schéma qui n'existe pas encore dans la base de données. Vous pouvez donc affecter un schéma DEFAULT_SCHEMA à un utilisateur avant de créer le schéma en question. En revanche, vous ne pouvez pas spécifier DEFAULT_SCHEMA pour un utilisateur associé à 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.

Vous ne pouvez modifier le nom d'un utilisateur associé à une connexion d'accès ou à un groupe Windows que si le SID du nouveau nom d'utilisateur correspond au SID enregistré dans la base de données. Cette vérification permet d'empêcher l'usurpation des identités de connexion Windows dans la base de données.

La clause WITH LOGIN active le remappage d'un utilisateur à une connexion différente. Les utilisateurs sans connexion, ceux mappés à un certificat ou bien ceux mappés à une clé asymétrique ne peuvent pas être remappés avec cette clause. Seuls les utilisateurs SQL et les utilisateurs (ou groupes) Windows peuvent être remappés. La clause WITH LOGIN ne peut pas être utilisée pour modifier le type d'utilisateur, par exemple pour modifier un compte Windows en connexion SQL Server.

Le nom de l'utilisateur sera renommé automatiquement avec le nom de la connexion si les conditions suivantes sont remplies.

  • L'utilisateur est un utilisateur Windows.

  • Le nom est un nom Windows (contient une barre oblique inverse).

  • Aucun nouveau nom n'a été spécifié.

  • Le nom actuel diffère du nom de connexion.

Sinon, l'utilisateur ne sera pas renommé à moins que l'appelant appelle également la clause NAME.

[!REMARQUE]

Un utilisateur bénéficiant de l'autorisation ALTER ANY USER peut modifier le schéma par défaut de n'importe quel utilisateur. Un utilisateur dont le schéma a été modifié peut, sans le savoir, sélectionner des données dans la mauvaise table ou exécuter du code à partir du mauvais schéma.

Le nom d'un utilisateur associé à une connexion d'accès SQL Server, un certificat ou une clé asymétrique ne doit pas contenir de barre oblique inverse (\).

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

Autorisations

ALTER ANY USER sur la base de données pour modifier le nom d'un utilisateur. ALTER pour changer de schéma par défaut. Les utilisateurs peuvent uniquement modifier leur propre schéma par défaut.

CONTROL sur la base de données pour remapper un utilisateur à une connexion.

Exemples

A. Modification du nom d'un utilisateur de base de données

L'exemple suivant modifie le nom de l'utilisateur de base de données Mary5 en Mary51.

USE AdventureWorks;
ALTER USER Mary5 WITH NAME = Mary51;
GO 

B. Modification du schéma par défaut d'un utilisateur

L'exemple suivant modifie le schéma par défaut de l'utilisateur Mary51 en Purchasing.

USE AdventureWorks;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO