ALTER USER (Transact-SQL)

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

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

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

<set_item> ::= 
      NAME = newUserName 
    | DEFAULT_SCHEMA = { schemaName | NULL }
    | LOGIN = loginName
    | PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
    | DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }

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 cet utilisateur. newUserName ne doit pas exister dans la base de données active.

  • DEFAULT_SCHEMA = { schemaName | NULL }
    Spécifie le premier schéma que le serveur va interroger pour résoudre les noms des objets associés à cet utilisateur. La définition du schéma par défaut sur NULL supprime un schéma par défaut d'un groupe Windows. L'option NULL ne peut pas être utilisée avec un utilisateur Windows.

  • PASSWORD = 'password'
    Spécifie le mot de passe de l'utilisateur à modifier. Les mots de passe respectent la casse.

    [!REMARQUE]

    Cette option est uniquement disponible pour les utilisateurs à relation contenant-contenu. Pour plus d'informations, consultez Bases de données à relation contenant-contenu et sp_migrate_user_to_contained (Transact-SQL).

  • OLD_PASSWORD ='oldpassword'
    Mot de passe d'utilisateur actuel qui sera remplacé par 'password'. Les mots de passe respectent la casse. OLD_PASSWORD est requis pour modifier un mot de passe, sauf si vous avez l'autorisation ALTER ANY USER. La présence obligatoire de OLD_PASSWORD empêche les utilisateurs disposant de l'autorisation IMPERSONATION de modifier le mot de passe.

    [!REMARQUE]

    Cette option est uniquement disponible pour les utilisateurs à relation contenant-contenu.

  • DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }
    Spécifie une langue par défaut à affecter à l'utilisateur. Si cette option a la valeur NONE, la langue par défaut est la langue par défaut actuellement définie pour la base de données. Si la langue par défaut de la base de données est modifiée ultérieurement, la langue par défaut de l'utilisateur reste inchangée. DEFAULT_LANGUAGE peut être l'ID local (lcid), le nom de la langue ou l'alias de langue.

    [!REMARQUE]

    Cette option peut être spécifiée uniquement dans une base de données à relation contenant-contenu et uniquement pour les utilisateurs à relation contenant-contenu.

Notes

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, mais qu'il est membre de plusieurs groupes qui disposent d'un schéma par défaut, le schéma du groupe Windows avec le principle_id le plus bas est utilisé. Si aucun schéma par défaut ne peut être déterminé pour un utilisateur, le schéma dbo est utilisé.

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 mappé à 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é, sauf si l'appelant appelle également la clause NAME.

Le nom d'un utilisateur associé à un compte de connexion 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 principaux et des schémas introduite dans SQL Server 2005 Pour plus d'informations sur les affichages catalogue, consultez Affichages catalogue (Transact-SQL).

Sécurité

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

Autorisations

Pour modifier le nom d'un utilisateur ou remapper l'utilisateur à une connexion différente, l'autorisation ALTER ANY USER est requise.

Pour modifier le schéma ou la langue par défaut, l'autorisation ALTER est requise sur l'utilisateur. Les utilisateurs peuvent uniquement modifier leur propre schéma ou langue par défaut.

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 AdventureWorks2012;
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 AdventureWorks2012;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C.Modification de plusieurs options à la fois

L'exemple suivant modifie plusieurs options pour un utilisateur de base de données à relation contenant-contenu dans une instruction.

USE AdventureWorks2012;
GO 
ALTER USER Philip 
WITH  NAME = Philipe 
    , DEFAULT_SCHEMA = Development 
    , PASSWORD = 'W1r77TT98%ab@#’ OLD_PASSWORD = 'New Devel0per' 
    , DEFAULT_LANGUAGE  = French ;
GO

Voir aussi

Référence

CREATE USER (Transact-SQL)

DROP USER (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_migrate_user_to_contained (Transact-SQL)

Concepts

Bases de données à relation contenant-contenu