Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S'applique à :SQL Server
Mappe un utilisateur de base de données existant à une connexion SQL Server.
Important
Cette fonctionnalité sera supprimée dans une version future de SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Utilisez ALTER USER à la place.
Conventions de la syntaxe Transact-SQL
Syntaxe
sp_change_users_login
[ @Action = ] 'Action'
[ , [ @UserNamePattern = ] N'UserNamePattern' ]
[ , [ @LoginName = ] N'LoginName' ]
[ , [ @Password = ] N'Password' ]
[ ; ]
Les arguments
[ @Action = ] 'Action'
Décrit l’action de la procédure stockée à effectuer. @Action est varchar(10), sans valeur par défaut et peut avoir l’une des valeurs suivantes.
| Valeur | Descriptif |
|---|---|
Auto_Fix |
Lie une entrée utilisateur dans l’affichage sys.database_principals catalogue système de la base de données active à une connexion SQL Server du même nom. Si une connexion portant le même nom n’existe pas, une connexion est créée. Examinez le résultat de l’instruction Auto_Fix pour vérifier que le lien correct est fait. Évitez d’utiliser Auto_Fix dans des situations sensibles à la sécurité.Lorsque vous utilisez Auto_Fix, vous devez spécifier @UserNamePattern et @Password si la connexion n’existe pas déjà, sinon vous devez spécifier @UserNamePattern , mais @Password est ignoré.
@LoginName doit être NULL.
@UserNamePattern doit être un utilisateur valide dans la base de données active. La connexion ne peut pas avoir un autre utilisateur mappé à celui-ci. |
Report |
Répertorie les utilisateurs et les identificateurs de sécurité correspondants dans la base de données active qui ne sont liés à aucune connexion.
@UserNamePattern, @LoginName et @Password doivent être NULL spécifiés ou non.Pour remplacer l’option de rapport par une requête à l’aide des tables système, comparez les entrées sys.server_principals dans les entrées dans sys.database_principals. |
Update_One |
Lie le @UserNamePattern spécifié dans la base de données active à un @LoginName SQL Server existant.
@UserNamePattern et @LoginName doivent être spécifiés.
@Password doit être NULL spécifié ou non. |
[ @UserNamePattern = ] N’UserNamePattern'
Nom d’un utilisateur dans la base de données active.
@UserNamePattern est sysname, avec la valeur par défaut NULL.
[ @LoginName = ] N’LoginName'
Nom d’une connexion SQL Server.
@LoginName est sysname, avec la valeur par défaut NULL.
[ @Password = ] N'Mot de passe
Mot de passe affecté à une nouvelle connexion SQL Server créée en spécifiant Auto_Fix.
@Password est sysname et ne peut pas être NULL. Si une connexion correspondante existe déjà, l’utilisateur et la connexion sont mappés et @Password est ignoré. Si une connexion correspondante n’existe pas, sp_change_users_login crée une connexion SQL Server et attribue @Password en tant que mot de passe pour la nouvelle connexion.
Important
Utilisez toujours un mot de passe fort.
Valeurs des codes de retour
0 (réussite) or 1 (échec).
Jeu de résultats
| Nom de la colonne | Type de données | Descriptif |
|---|---|---|
UserName |
sysname | Nom de l'utilisateur de la base de données. |
UserSID |
varbinary(85) | Identificateur de sécurité de l'utilisateur. |
Notes
Permet sp_change_users_login de lier un utilisateur de base de données dans la base de données active avec une connexion SQL Server. Si la connexion d’un utilisateur change, utilisez cette option sp_change_users_login pour lier l’utilisateur à la nouvelle connexion sans perdre les autorisations de l’utilisateur. La nouvelle @LoginName ne peut pas être sa, et la @UserNamePattern ne peut pas être dbo, guestou un INFORMATION_SCHEMA utilisateur.
sp_change_users_login ne peut pas être utilisé pour mapper les utilisateurs de base de données aux principaux, certificats ou clés asymétriques de niveau Windows.
sp_change_users_login ne peut pas être utilisé avec une connexion SQL Server créée à partir d’un principal Windows ou avec un utilisateur créé à l’aide CREATE USER WITHOUT LOGINde .
sp_change_users_login ne peut pas être exécuté dans une transaction définie par l’utilisateur.
autorisations
Nécessite l'appartenance au rôle de base de données fixe db_owner. Seuls les membres du rôle serveur fixe sysadmin peuvent spécifier l’option Auto_Fix .
Exemples
Les exemples de code de cet article utilisent les bases de données d'exemple AdventureWorks2025 ou AdventureWorksDW2025, que vous pouvez télécharger à partir de la page d'accueil Microsoft SQL Server Samples and Community Projects.
R : Afficher un rapport de l’utilisateur actuel sur les mappages de connexion
Cet exemple produit un rapport des utilisateurs définis dans la base de données active et de leurs identificateurs de sécurité (SID).
EXECUTE sp_change_users_login 'Report';
B. Mapper un utilisateur de base de données à une nouvelle connexion SQL Server
Dans l’exemple suivant, un utilisateur de base de données est associé à une nouvelle connexion SQL Server. L'utilisateur MB-Sales, associé au départ à un autre compte de connexion, est mappé sur le nouveau compte MaryB. Remplacez par <password> un mot de passe fort.
--Create the new login.
CREATE LOGIN MaryB WITH PASSWORD = '<password>';
GO
--Map database user MB-Sales to login MaryB.
USE AdventureWorks2022;
GO
EXECUTE sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO
Chapitre C. Mapper automatiquement un utilisateur à une connexion et créer une nouvelle connexion si nécessaire
L’exemple suivant montre comment utiliser pour mapper Auto_Fix un utilisateur existant à une connexion du même nom ou pour créer la connexion Mary SQL Server avec un mot de passe si la connexion Mary n’existe pas. Remplacez par <password> un mot de passe fort.
USE AdventureWorks2022;
GO
EXECUTE sp_change_users_login 'Auto_Fix', 'Mary', NULL, '<password>';
GO