sp_addrolemember (Transact-SQL)

Ajoute un utilisateur ou un rôle de base de données, un compte de connexion ou un groupe Windows à un rôle de base de données dans la base de données active.

Important

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 ROLE.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

sp_addrolemember [ @rolename = ] 'role',
    [ @membername = ] 'security_account'

Arguments

  • [ @rolename= ] 'role'
    Nom du rôle de base de données dans la base de données actuelle. role est de type sysname, sans valeur par défaut.

  • [ @membername= ] 'security_account'
    Compte de sécurité ajouté au rôle. security_account est de type sysname, sans valeur par défaut. security_account peut être un utilisateur ou un rôle de base de données, une connexion ou un groupe Windows.

Valeurs des codes de retour

0 (réussite) ou 1 (échec)

Notes

Un membre ajouté à un rôle à l'aide de sp_addrolemember hérite des autorisations de ce rôle. Si le nouveau membre est un principal au niveau Windows sans utilisateur de base de données correspondant, un utilisateur de base de données est créé, mais peut ne pas être entièrement mappé à la connexion. Vérifiez toujours que la connexion existe et a accès à la base de données.

Un rôle ne peut pas s'inclure lui-même en tant que membre. Des définitions « circulaires » de ce type ne sont pas valides, même si l'appartenance est seulement déduite indirectement par une ou plusieurs appartenances intermédiaires.

sp_addrolemember ne peut pas ajouter un rôle de base de données fixe, un rôle serveur fixe ou un propriétaire de base de données (dbo) à un rôle. sp_addrolemember ne peut pas être exécuté au cours d'une transaction définie par l'utilisateur.

Utilisez uniquement sp_addrolemember pour ajouter un membre à un rôle de base de données. Pour ajouter un membre à un rôle de serveur, utilisez sp_addsrvrolemember (Transact-SQL).

Autorisations

L'ajout de membres à des rôles de base de données flexibles nécessite l'un des éléments suivants :

  • Appartenance au rôle de base de données fixe db_securityadmin ou db_owner.

  • Appartenance au rôle qui détient le rôle.

  • Autorisation ALTER ANY ROLE ou ALTER sur le rôle.

L'ajout de membres à des rôles de base de données fixe nécessite l'appartenance au rôle de base de données fixe db_owner.

Exemples

A.Ajout d'une connexion Windows

L'exemple suivant ajoute la connexion Windows Contoso\Mary5 à la base de données AdventureWorks2012 en tant qu'utilisateur Mary5. L'utilisateur Mary5 est ensuite ajouté au rôle Production.

[!REMARQUE]

Comme Contoso\Mary5 est connu comme l'utilisateur de base de données Mary5 dans la base de données AdventureWorks2012, le nom d'utilisateur Mary5 doit être spécifié. L'instruction échoue à moins qu'une connexion Contoso\Mary5 n'existe. Effectuez un test en utilisant une connexion à partir de votre domaine.

USE AdventureWorks2012;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5] ;
GO
EXEC sp_addrolemember 'Production', 'Mary5'

B.Ajout d'un utilisateur de base de données

L'exemple suivant ajoute l'utilisateur de base de données Mary5 au rôle de base de données Production dans la base de données actuelle.

EXEC sp_addrolemember 'Production', 'Mary5'

Voir aussi

Référence

Procédures stockées liées à la sécurité (Transact-SQL)

sp_addsrvrolemember (Transact-SQL)

sp_droprolemember (Transact-SQL)

sp_grantdbaccess (Transact-SQL)

Procédures stockées système (Transact-SQL)

Rôles au niveau de la base de données