ALTER USER (Transact-SQL)

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

Conventions de la syntaxe Transact-SQL

Remarque

Microsoft Entra ID était précédemment connu sous le nom d’Azure Active Directory (Azure AD).

Sélectionner un produit

Sur la ligne suivante, sélectionnez le nom du produit qui vous intéresse afin d’afficher uniquement les informations qui le concernent.

* SQL Server *  

 

SQL Server

Syntaxe

-- Syntax for SQL Server

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> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

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 déjà 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' S’applique à : SQL Server 2012 (11.x) et versions ultérieures, et à SQL Database.

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

Notes

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

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

Mot de passe de l’utilisateur actuel qui sera remplacé par 'password'. Les mots de passe respectent la casse. OLD_PASSWORD est obligatoire pour changer un mot de passe, sauf si vous disposez de l’autorisation ALTER ANY USER. La spécification obligatoire du paramètre OLD_PASSWORD empêche les utilisateurs disposant de l’autorisation IMPERSONATION de changer le mot de passe.

Notes

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

DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }S’applique à : SQL Server 2012 (11.x) et versions ultérieures.

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.

Notes

Cette option peut être spécifiée uniquement dans une base de données autonome et uniquement pour les utilisateurs autonomes.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] S’applique à  : SQL Server 2016 (13.x) et versions ultérieures, et à 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.

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, 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. 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 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 changer le type d'utilisateur, par exemple pour changer un compte Windows en connexion SQL Server.

Un SID incompatible peut se produire quand vous avez restauré une base de données à partir d’un autre serveur et que vous avez un utilisateur de base de données mappé à une connexion SQL Server. Vous pouvez utiliser la clause WITH LOGIN pour corriger cette situation en remplaçant le SID de l’utilisateur dans la base de données par le SID de connexion du serveur.

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 mappé à un compte de connexion SQL Server, un certificat ou une clé asymétrique ne peut pas contenir de barre oblique inverse (\).

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

Notes

Un utilisateur bénéficiant de l’autorisation ALTER ANY USER peut changer 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 changer le nom d’un utilisateur, vous devez disposer de l’autorisation ALTER ANY USER.

Pour changer la connexion cible d’un utilisateur, vous devez disposer de l’autorisation CONTROL sur la base de données.

Pour changer le nom d’un utilisateur bénéficiant de l’autorisation CONTROL sur la base de données, vous devez disposer de l’autorisation CONTROL sur la base de données.

Pour changer le schéma ou la langue par défaut, vous devez disposer de l’autorisation ALTER sur l’utilisateur. Les utilisateurs peuvent modifier leur propre schéma ou langue par défaut.

Exemples

Tous les exemples sont exécutés dans une base de données utilisateur.

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

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.

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 autonome dans une instruction.

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

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

D. Corriger un SID incompatible

L’exemple suivant corrige le SID de l’utilisateur dans la base de données afin qu’il corresponde au SID sur le serveur pour une connexion authentifiée SQL Server.

ALTER USER Mai
WITH LOGIN = Mai;
GO

Voir aussi

* SQL Database *

 

SQL Database

Syntaxe

-- Syntax for Azure SQL Database

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

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = schemaName
| LOGIN = loginName
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
[;]

-- Azure SQL Database Update Syntax
ALTER USER userName
 WITH <set_item> [ ,...n ]
[;]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

-- SQL Database syntax when connected to a federation member
ALTER USER userName
 WITH <set_item> [ ,... n ]
[;]

<set_item> ::=
 NAME = newUserName

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.

Si l’instruction ALTER USER est la seule instruction d’un lot SQL, Azure SQL Database prend en charge la clause WITH LOGIN. Si l'instruction ALTER 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.

NAME = newUserName : spécifie le nouveau nom de cet utilisateur. newUserName ne doit pas déjà 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' S’applique à : SQL Server 2012 (11.x) et versions ultérieures, et à SQL Database.

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

Notes

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

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

Mot de passe de l’utilisateur actuel qui sera remplacé par 'password'. Les mots de passe respectent la casse. OLD_PASSWORD est obligatoire pour changer un mot de passe, sauf si vous disposez de l’autorisation ALTER ANY USER. La spécification obligatoire du paramètre OLD_PASSWORD empêche les utilisateurs disposant de l’autorisation IMPERSONATION de changer le mot de passe.

Notes

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

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] S’applique à  : SQL Server 2016 (13.x) et versions ultérieures, et à 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.

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, 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. 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 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 changer le type d'utilisateur, par exemple pour changer 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 mappé à un compte de connexion SQL Server, un certificat ou une clé asymétrique ne peut pas contenir de barre oblique inverse (\).

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

Notes

Un utilisateur bénéficiant de l’autorisation ALTER ANY USER peut changer 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 changer le nom d’un utilisateur, vous devez disposer de l’autorisation ALTER ANY USER.

Pour changer la connexion cible d’un utilisateur, vous devez disposer de l’autorisation CONTROL sur la base de données.

Pour changer le nom d’un utilisateur bénéficiant de l’autorisation CONTROL sur la base de données, vous devez disposer de l’autorisation CONTROL sur la base de données.

Pour changer le schéma ou la langue par défaut, vous devez disposer de l’autorisation ALTER sur l’utilisateur. Les utilisateurs peuvent modifier leur propre schéma ou langue par défaut.

Exemples

Tous les exemples sont exécutés dans une base de données utilisateur.

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

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.

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 autonome dans une instruction.

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

Voir aussi

* SQL Managed Instance *

 

Azure SQL Managed Instance

Syntaxe

Important

Seules les options suivantes sont prises en charge pour Azure SQL Managed Instance lors de l’application aux utilisateurs disposant de connexions Microsoft Entra : DEFAULT_SCHEMA = { schemaName | NULL } et DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }

il existe une nouvelle extension de syntaxe qui a été ajoutée pour aider à remappper les utilisateurs dans une base de données migrée vers Azure SQL Managed Instance. La syntaxe ALTER USER permet de mapper les utilisateurs de base de données dans un domaine fédéré et synchronisé avec l’ID Microsoft Entra, aux connexions Microsoft Entra.

-- Syntax for SQL Managed Instance
ALTER USER userName
 { WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]

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

-- Users or groups that are migrated as federated and synchronized with Azure AD have the following syntax:

/** Applies to Windows users that were migrated and have the following user names:
- Windows user <domain\user>
- Windows group <domain\MyWindowsGroup>
- Windows alias <MyWindowsAlias>
**/

ALTER USER userName
 { WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]

<set_item> ::=
 NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| 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.

Si l’instruction ALTER USER est la seule instruction d’un lot SQL, Azure SQL Database prend en charge la clause WITH LOGIN. Si l'instruction ALTER 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.

NAME = newUserName : spécifie le nouveau nom de cet utilisateur. newUserName ne doit pas déjà 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.

Notes

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

OLD_PASSWORD = 'oldpassword'

Mot de passe de l’utilisateur actuel qui sera remplacé par 'password'. Les mots de passe respectent la casse. OLD_PASSWORD est obligatoire pour changer un mot de passe, sauf si vous disposez de l’autorisation ALTER ANY USER. La spécification obligatoire du paramètre OLD_PASSWORD empêche les utilisateurs disposant de l’autorisation IMPERSONATION de changer le mot de passe.

Notes

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.

Notes

Cette option peut être spécifiée uniquement dans une base de données autonome et uniquement pour les utilisateurs autonomes.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

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.

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, 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. 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 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 changer le type d'utilisateur, par exemple pour changer un compte Windows en connexion SQL Server. La seule exception est lors de la modification d’un utilisateur Windows par un utilisateur Microsoft Entra.

Remarque

Les règles suivantes ne s’appliquent pas aux utilisateurs Windows sur Azure SQL Managed Instance, car nous ne prenons pas en charge la création de connexions Windows sur Azure SQL Managed Instance. L’option WITH LOGIN ne peut être utilisée que si les connexions Microsoft Entra sont présentes.

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 mappé à un compte de connexion SQL Server, un certificat ou une clé asymétrique ne peut pas contenir de barre oblique inverse (\).

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 principaux et des schémas introduite dans SQL Server 2005 Pour plus d'informations sur les affichages catalogue, consultez Affichages catalogue (Transact-SQL).

Remarques pour les utilisateurs Windows dans SQL local migrés vers Azure SQL Managed Instance

Ces remarques s’appliquent à l’authentification en tant qu’utilisateurs Windows qui ont été fédérés et synchronisés avec l’ID Microsoft Entra.

  • La validation des utilisateurs ou groupes Windows mappés à Microsoft Entra ID est effectuée par défaut via l’API Graph dans toutes les versions de la syntaxe ALTER USER utilisée à des fins de migration.
  • Les utilisateurs locaux à qui un nom d’alias a été attribué (à l’aide d’un nom différent du compte Windows d’origine) conserveront le nom d’alias.
  • Pour l’authentification Microsoft Entra, le paramètre LOGIN s’applique uniquement à Azure SQL Managed Instance et ne peut pas être utilisé avec SQL Database.
  • Pour afficher les connexions pour les principaux Microsoft Entras, utilisez la commande suivante :

select * from sys.server_principals.

  • Vérifiez que le type indiqué de la connexion est E ou X.
  • L’option PASSWORD ne peut pas être utilisée pour les utilisateurs de Microsoft Entra.
  • Dans tous les cas de migration, les rôles et les autorisations des utilisateurs ou groupes Windows sont automatiquement transférés vers les nouveaux utilisateurs ou groupes Microsoft Entra.
  • Une nouvelle extension de syntaxe, FROM EXTERNAL PROVIDER est disponible pour modifier les utilisateurs et les groupes Windows de SQL local vers les utilisateurs et groupes Microsoft Entra. Le domaine Windows doit être fédéré avec l’ID Microsoft Entra et tous les membres du domaine Windows doivent exister dans l’ID Microsoft Entra lors de l’utilisation de cette extension. La syntaxe FROM EXTERNAL PROVIDER s’applique à Azure SQL Managed Instance et doit être utilisée si les utilisateurs Windows n’ont pas de connexions sur l’instance SQL d’origine et doivent être mappés aux utilisateurs de base de données Microsoft Entra autonomes.
  • Dans ce cas, le nom d’utilisateur (userName) autorisé peut être :
  • Un utilisateur Widows (domaine\utilisateur).
  • Un groupe Windows (MyWidnowsGroup).
  • Un alias Windows (MyWindowsAlias).
  • Le résultat de la commande ALTER remplace l’ancien nom d’utilisateur par le nom correspondant trouvé dans l’ID Microsoft Entra en fonction du SID d’origine de l’ancien nom d’utilisateur. Le nom modifié est remplacé et stocké dans les métadonnées de la base de données :
  • (domaine\utilisateur) sera remplacé par Microsoft Entra user@domain.com.
  • (domaine\MyWidnowsGroup) sera remplacé par le groupe Microsoft Entra.
  • (MyWindowsAlias) reste inchangé, mais le SID de cet utilisateur sera archivé dans l’ID Microsoft Entra.

Remarque

Si le SID de l’utilisateur d’origine converti en objectID est introuvable dans Microsoft Entra ID, la commande ALTER USER échoue.

  • Pour afficher les utilisateurs modifiés, utilisez la commande suivante : select * from sys.database_principals
  • Vérifiez que le type indiqué de l’utilisateur est E ou X.
  • Lorsque NAME est utilisé pour migrer des utilisateurs Windows vers des utilisateurs Microsoft Entra, les restrictions suivantes s’appliquent :
  • Une valeur LOGIN valide doit être spécifiée.
  • Le NOM est archivé dans l’ID Microsoft Entra et ne peut être que :
  • Le nom de la valeur LOGIN.
  • Alias : le nom ne peut pas exister dans l’ID Microsoft Entra.
  • Dans tous les autres cas, la syntaxe échoue.

Sécurité

Notes

Un utilisateur bénéficiant de l’autorisation ALTER ANY USER peut changer 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 changer le nom d’un utilisateur, vous devez disposer de l’autorisation ALTER ANY USER.

Pour changer la connexion cible d’un utilisateur, vous devez disposer de l’autorisation CONTROL sur la base de données.

Pour changer le nom d’un utilisateur bénéficiant de l’autorisation CONTROL sur la base de données, vous devez disposer de l’autorisation CONTROL sur la base de données.

Pour changer le schéma ou la langue par défaut, vous devez disposer de l’autorisation ALTER sur l’utilisateur. Les utilisateurs peuvent modifier leur propre schéma ou langue par défaut.

Exemples

Tous les exemples sont exécutés dans une base de données utilisateur.

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

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.

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 autonome dans une instruction.

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

D. Mapper l’utilisateur dans la base de données à une connexion Microsoft Entra après la migration

L’exemple suivant remapise l’utilisateur, westus/joe à un utilisateur Microsoft Entra. joe@westus.com Cet exemple concerne les connexions qui existent déjà dans l’instance managée. Cette opération doit être effectuée une fois que vous avez effectué une migration de base de données vers Azure SQL Managed Instance et que vous souhaitez utiliser la connexion Microsoft Entra pour l’authentification.

ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com]

E. Mapper un ancien utilisateur Windows dans la base de données sans connexion dans Azure SQL Managed Instance à un utilisateur Microsoft Entra

L’exemple suivant remapise l’utilisateur, westus/joe sans connexion, à un utilisateur Microsoft Entra. joe@westus.com L’utilisateur fédéré doit exister dans l’ID Microsoft Entra.

ALTER USER [westus/joe] FROM EXTERNAL PROVIDER

F. Mapper l’alias utilisateur à une connexion Microsoft Entra existante

L’exemple suivant remappe le nom d’utilisateur westus\joe à joe_alias. La connexion Microsoft Entra correspondante dans ce cas est joe@westus.com.

ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com], name= joe_alias

G. Mapper un groupe Windows qui a été migré dans Azure SQL Managed Instance vers un groupe Microsoft Entra

L’exemple suivant mappage l’ancien groupe local à westus\mygroup un groupe mygroup Microsoft Entra dans l’instance managée. Le groupe doit exister dans l’ID Microsoft Entra.

ALTER USER [westus\mygroup] WITH LOGIN = mygroup

Voir aussi

* Azure Synapse
Analytics *

 

Azure Synapse Analytics

Syntaxe

-- Syntax for Azure Synapse

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

<set_item> ::=
 NAME = newUserName
 | LOGIN = loginName
 | DEFAULT_SCHEMA = schema_name
[;]

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.

Si l’instruction ALTER USER est la seule instruction d’un lot SQL, Azure SQL Database prend en charge la clause WITH LOGIN. Si l'instruction ALTER 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.

NAME = newUserName : spécifie le nouveau nom de cet utilisateur. newUserName ne doit pas déjà 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.

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, 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. 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 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 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 changer le type d'utilisateur, par exemple pour changer 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.

  • 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 mappé à un compte de connexion SQL Server, un certificat ou une clé asymétrique ne peut pas contenir de barre oblique inverse (\).

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

Notes

Un utilisateur bénéficiant de l’autorisation ALTER ANY USER peut changer 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 changer le nom d’un utilisateur, vous devez disposer de l’autorisation ALTER ANY USER.

Pour changer la connexion cible d’un utilisateur, vous devez disposer de l’autorisation CONTROL sur la base de données.

Pour changer le nom d’un utilisateur bénéficiant de l’autorisation CONTROL sur la base de données, vous devez disposer de l’autorisation CONTROL sur la base de données.

Pour changer le schéma ou la langue par défaut, vous devez disposer de l’autorisation ALTER sur l’utilisateur. Les utilisateurs peuvent modifier leur propre schéma ou langue par défaut.

Exemples

Tous les exemples sont exécutés dans une base de données utilisateur.

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

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.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

Voir aussi

* Analytics
Platform System (PDW) *

 

Système de la plateforme d'analyse

Syntaxe

-- Syntax for Analytics Platform System

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

<set_item> ::=
 NAME = newUserName
 | LOGIN = loginName
 | DEFAULT_SCHEMA = schema_name
[;]

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.

Si l’instruction ALTER USER est la seule instruction d’un lot SQL, Azure SQL Database prend en charge la clause WITH LOGIN. Si l'instruction ALTER 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.

NAME = newUserName : spécifie le nouveau nom de cet utilisateur. newUserName ne doit pas déjà 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.

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, 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. 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 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 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 changer le type d'utilisateur, par exemple pour changer 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.

  • 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 mappé à un compte de connexion SQL Server, un certificat ou une clé asymétrique ne peut pas contenir de barre oblique inverse (\).

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

Notes

Un utilisateur bénéficiant de l’autorisation ALTER ANY USER peut changer 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 changer le nom d’un utilisateur, vous devez disposer de l’autorisation ALTER ANY USER.

Pour changer la connexion cible d’un utilisateur, vous devez disposer de l’autorisation CONTROL sur la base de données.

Pour changer le nom d’un utilisateur bénéficiant de l’autorisation CONTROL sur la base de données, vous devez disposer de l’autorisation CONTROL sur la base de données.

Pour changer le schéma ou la langue par défaut, vous devez disposer de l’autorisation ALTER sur l’utilisateur. Les utilisateurs peuvent modifier leur propre schéma ou langue par défaut.

Exemples

Tous les exemples sont exécutés dans une base de données utilisateur.

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

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.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

Voir aussi