sp_change_users_login (Transact-SQL)

Mappe un utilisateur de base de données existant à un compte de connexion SQL Server. 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 plutôt ALTER USER.

Icône Lien de rubrique Conventions de la syntaxe de 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. action est de type varchar(10). action peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    Auto_Fix

    Lie une entrée d'utilisateur de l'affichage catalogue système sys.database_principals de la base de données actuelle à un compte de 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 les résultats de l'instruction Auto_Fix pour vérifier que la liaison correcte est effectuée. Évitez l'utilisation d'Auto_Fix dans les situations sensibles sur le plan de la sécurité.

    Lorsque vous utilisez Auto_Fix, vous devez spécifier user et password si le compte de connexion n'existe pas déjà, sinon vous devez spécifier user mais password sera ignoré. login doit être NULL. user 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. user, login et password doivent avoir la valeur NULL ou ne pas être spécifiés.

    Update_One

    Lie l'utilisateur user spécifié de la base de données active à une connexion SQL Server login existante. user et login doivent être spécifiés. password doit avoir la valeur NULL ou ne pas être spécifié.

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

  • [ @LoginName= ] 'login'
    Est le nom d'un compte de connexion SQL Server. login est de type sysname, avec NULL comme valeur par défaut.

  • [ @Password= ] 'password'
    Mot de passe affecté à la nouvelle connexion SQL Server créée avec l'option Auto_Fix. S'il existe déjà un compte de connexion adéquat, il est mappé sur l'utilisateur et password est ignoré. S'il n'existe pas de compte de connexion adéquat, sp_change_users_login crée un nouveau compte de connexion SQL Server et lui affecte le mot de passe password . password est de type sysname et ne doit pas être NULL.

    Remarque relative à la sécuritéRemarque relative à la sécurité

    Utilisez un mot de passe fort. Pour plus d'informations, consultez Mots de passe forts.

Valeurs des codes 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.

Notes

Utilisez sp_change_users_login pour lier un utilisateur de la base de données actuelle à un compte de 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. Le nouveau login ne peut pas être sa, et user ne peut pas être dbo, guest ni un utilisateur INFORMATION_SCHEMA.

sp_change_users_login ne peut pas être utilisé 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 un compte de connexion SQL Server créé à partir d'un principal Windows, ni avec un utilisateur créé à l'aide de CREATE USER WITHOUT LOGIN.

sp_change_users_login ne peut pas être exécuté au cours d'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

A.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 la base de données est associé à un nouveau compte de 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 utiliser Auto_Fix pour mapper un utilisateur existant sur un compte de connexion du même nom ou pour créer le compte de connexion SQL Server Mary avec le mot de passe B3r12-3x$098f6 si ce compte n'existe pas.

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

Voir aussi

Référence

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)