sp_change_users_login (Transact-SQL)

Mis à jour : 12 décembre 2006

Mappe un utilisateur de base de données existant sur un compte de connexion SQL Server.

ms174378.note(fr-fr,SQL.90).gifRemarque :
sp_change_users_login ne peut pas être utilisé avec un compte de connexion SQL Server créé à partir d'une entité de sécurité Windows, ni avec un utilisateur créé à l'aide de CREATE USER WITHOUT LOGIN.

Icône Lien de rubriqueConventions 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 que la procédure doit effectuer. L'argument action est de type varchar(10) et peut avoir l'une des valeurs suivantes :

    Valeur Description

    Auto_Fix

    Lie une entrée d'utilisateur de l'affichage catalogue sys.database_principals de la base de données active à 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 de 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 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 à un compte SQL Server login existant. 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é au nouveau compte de connexion SQL Server créé 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 avoir la valeur NULL.

    ms174378.security(fr-fr,SQL.90).gifRemarque 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

ms174378.note(fr-fr,SQL.90).gifRemarque :
La procédure sp_change_users_login ne peut pas être utilisée pour mapper des utilisateurs de base de données sur des entités de sécurité, des certificats ou des clés asymétriques de niveau Windows.

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

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 de 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 qui ne sont liés à aucun compte de connexion, 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 AdventureWorks;
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 Server Mary avec le mot de passe B3r12-3x$098f6 si ce compte n'existe pas.

USE AdventureWorks;
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)

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

12 décembre 2006

Contenu modifié :
  • Ajout de précisions à la remarque sur l'utilisation de sp_change_users_login.