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.
Remarque : |
---|
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. |
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 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.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
Remarque : |
---|
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 |
|