sp_change_users_login (Transact-SQL)

Mappe un utilisateur de base de données existant à une 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 rubriqueConventions de syntaxe Transact-SQL

Syntaxe

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

Arguments

  • [ @Action = ] 'action'
    Décrit l'action que la procédure doit effectuer. L'argument action est de type varchar(10). action et peut avoir 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 active à une connexion SQL Server du même nom. La connexion de même nom est créée si elle 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 la connexion n'existe pas encore ; sinon, vous devez spécifier user, mais password sera ignoré. login doit avoir la valeur NULL. user doit être un utilisateur valide dans la base de données active. La connexion ne doit être associée à aucun autre utilisateur.

    Report

    Dresse la liste des utilisateurs qui ne sont pas liés à une 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 Serverlogin 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 comme valeur par défaut NULL.

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

  • [ @Password = ] 'password'
    Mot de passe affecté à la nouvelle connexion SQL Server créée avec l'option Auto_Fix. S'il existe déjà une connexion adéquate, elle est mappée à l'utilisateur et password est ignoré. S'il n'existe pas de connexion adéquate, sp_change_users_login crée une nouvelle connexion SQL Server et lui affecte le mot de passe password . password est de type sysname et ne doit pas avoir la valeur 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 (succès) ou 1 (échec)

Jeux de résultats

Nom de 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 active à une connexion SQL Server. Si la connexion d'un utilisateur a changé, utilisez sp_change_users_login pour lier l'utilisateur à la nouvelle connexion sans perdre les autorisations de l'utilisateur. La nouvelle connexion login ne peut pas être sa et l'utilisateur userne peut pas être dbo, guest 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 à des serveurs 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 serveur principal Windows, ni 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

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

L'exemple suivant 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é à une nouvelle connexion SQL Server. L'utilisateur MB-Sales, associé au départ à une autre connexion, est mappé à la nouvelle connexion MaryB.

--Create the new login.
CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';
GO
--Map database user MB-Sales to login MaryB.
USE AdventureWorks;
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 à une connexion du même nom ou pour créer la connexion SQL ServerMary avec le mot de passe B3r12-3x$098f6 si la connexion Mary n'existe pas.

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