sp_change_users_login (Transact-SQL)

S’applique à : SQL Server (toutes les versions prises en charge)

Mappe un utilisateur de base de données existant à une connexion SQL Server.

Important

Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft 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 à la place ALTER USER .

Topic link iconConventions de la syntaxe Transact-SQL

Syntaxe

  
sp_change_users_login [ @Action = ] 'action'   
    [ , [ @UserNamePattern = ] 'user' ]   
    [ , [ @LoginName = ] 'login' ]   
    [ , [ @Password = ] 'password' ]  
[;]  

Arguments

[ @Action= ] 'action'
Décrit l'action à effectuer par la procédure. l’action est varchar(10). l’action peut avoir l’une des valeurs suivantes.

Valeur Description
Auto_Fix Lie une entrée utilisateur dans l’affichage catalogue système sys.database_principals de la base de données active à une connexion SQL Server du même nom. Le compte de connexion de même nom est créé s'il n'existe pas déjà. Examinez le résultat de l’instruction Auto_Fix pour confirmer que le lien correct est fait. Évitez d’utiliser des Auto_Fix dans des situations sensibles à la sécurité.

Lorsque vous utilisez Auto_Fix, vous devez spécifier l’utilisateur et le mot de passe si la connexion n’existe pas déjà, sinon vous devez spécifier l’utilisateur , mais le mot de passe est ignoré. la connexion doit avoir la valeur NULL. l’utilisateur doit être un utilisateur valide dans la base de données active. Le compte de connexion ne doit être associé à aucun autre utilisateur.
Report Dresse la liste des utilisateurs qui ne sont pas liés à un compte de connexion dans la base de données active et indique les identificateurs de sécurité (SID) correspondants. l’utilisateur, la connexion et le mot de passe doivent être NULL ou non spécifiés.

Pour remplacer l’option de rapport par une requête à l’aide des tables système, comparez les entrées de sys.server_prinicpals aux entrées de sys.database_principals.
Update_One Lie l’utilisateur spécifié dans la base de données active à une connexion SQL Server existante. l’utilisateur et la connexion doivent être spécifiés. le mot de passe doit être NULL ou non spécifié.

[ @UserNamePattern= ] 'user'
Nom d'un utilisateur dans la base de données active. l’utilisateur est sysname, avec la valeur par défaut NULL.

[ @LoginName= ] 'login'
Nom d’une connexion SQL Server. login est de type sysname, avec NULL comme valeur par défaut.

[ @Password= ] 'password'
Mot de passe affecté à une nouvelle connexion SQL Server créée en spécifiant Auto_Fix. Si une connexion correspondante existe déjà, l’utilisateur et la connexion sont mappés et le mot de passe est ignoré. Si aucune connexion correspondante n’existe, sp_change_users_login crée une connexion SQL Server et attribue un mot de passe comme mot de passe pour la nouvelle connexion. le mot de passe est sysname et ne doit pas être NULL.

Important

Utilisez toujours un mot de passe fort !

Codet de retour

0 (réussite) ou 1 (échec)

Jeux de résultats

Nom de la colonne Type de données Description
UserName sysname Nom de l'utilisateur de la base de données.
UserSID varbinary(85) Identificateur de sécurité de l'utilisateur.

Remarques

Utilisez sp_change_users_login pour lier un utilisateur de base de données dans la base de données active avec une connexion SQL Server. Si le compte de connexion d'un utilisateur a changé, utilisez sp_change_users_login pour lier l'utilisateur au nouveau compte de connexion sans perdre les autorisations de l'utilisateur. La nouvelle connexion ne peut pas être sa, et l’utilisateur ne peut pas être dbo, invité ou un utilisateur INFORMATION_SCHEMA.

La procédure sp_change_users_login ne peut pas être utilisée pour mapper des utilisateurs de base de données sur des principaux, des certificats ou des 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 de CREATE USER WITHOUT LOGIN.

La procédure sp_change_users_login ne peut pas être exécutée 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

R. Affichage d'un rapport des mappages utilisateur-connexion en cours

Cet exemple produit un rapport des utilisateurs définis dans la base de données active et de leurs identificateurs de sécurité (SID).

EXEC sp_change_users_login 'Report';  

B. Mappage d'un utilisateur de la 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.

--Create the new login.  
CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';  
GO  
--Map database user MB-Sales to login MaryB.  
USE AdventureWorks2012;  
GO  
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';  
GO  

C. Mappage automatique d'un utilisateur à une connexion en créant une nouvelle connexion si nécessaire

L’exemple suivant montre comment mapper Auto_Fix un utilisateur existant à une connexion du même nom ou créer la connexion SQL Server Mary qui a le mot de passe B3r12-3x$098f6 si la connexion Mary n’existe pas.

USE AdventureWorks2012;  
GO  
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';  
GO  

Voir aussi

Procédures stockées liées à la sécurité (Transact-SQL)
CREATE LOGIN (Transact-SQL)
sp_adduser (Transact-SQL)
sp_helplogins (Transact-SQL)
Procédures stockées système (Transact-SQL)
sys.database_principals (Transact-SQL)