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 la 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. 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 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. 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 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'un compte de 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à un compte de connexion adéquat, il est mappé sur 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 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 active à 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 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 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, 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

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 sur un nouveau compte de 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 AdventureWorks2008R2;
GO
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO

C. Mappage automatique d'un utilisateur sur un compte de connexion en créant un nouveau compte de 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 ServerMary avec le mot de passe B3r12-3x$098f6 si ce compte n'existe pas.

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