Freigeben über


sp_addrolemember (Transact-SQL)

Fügt einer Datenbankrolle in der aktuellen Datenbank einen Datenbankbenutzer, eine Datenbankrolle, einen Windows-Anmeldenamen oder eine Windows-Gruppe hinzu.

Wichtiger HinweisWichtig

Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Verwenden Sie stattdessen ALTER ROLE.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • [ @rolename= ] 'role'
    Der Name der Datenbankrolle in der aktuellen Datenbank. role ist vom Datentyp sysname und hat keinen Standardwert.

  • [ @membername= ] 'security_account'
    Das Sicherheitskonto, das der Rolle hinzugefügt wird. security_account ist vom Datentyp sysname und hat keinen Standardwert. security_account kann ein Datenbankbenutzer, eine Datenbankrolle, ein Windows-Anmeldename oder eine Windows-Gruppe sein.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

Ein Mitglied, das einer Rolle mithilfe von sp_addrolemember hinzugefügt wird, erbt die Berechtigungen der Rolle. Falls das neue Mitglied ein Prinzipal auf Windows-Ebene ohne einen entsprechenden Datenbankbenutzer ist, wird ein Datenbankbenutzer erstellt, jedoch möglicherweise nicht vollständig der Anmeldung zugeordnet. Überprüfen Sie stets, ob die Anmeldung vorhanden ist und Zugriff auf die Datenbank hat.

Eine Rolle kann sich selbst nicht als Mitglied enthalten. Diese ringförmigen Definitionen sind ungültig, auch wenn die Mitgliedschaft nur indirekt durch eine Zwischenmitgliedschaft impliziert ist.

sp_addrolemember kann einer Rolle keine feste Datenbankrolle, feste Serverrolle oder dbo hinzufügen. sp_addrolemember kann nicht innerhalb einer benutzerdefinierten Transaktion ausgeführt werden.

Verwenden Sie ausschließlich sp_addrolemember, um einer Datenbankrolle ein Mitglied hinzuzufügen. Verwenden Sie sp_addsrvrolemember (Transact-SQL), um einer festen Serverrolle ein Mitglied hinzuzufügen.

Berechtigungen

Für das Hinzufügen von Mitgliedern zu flexiblen Datenbankrollen muss eine der folgenden Bedingungen erfüllt sein:

  • Mitgliedschaft bei der festen Datenbankrolle db_securityadmin oder db_owner

  • Mitgliedschaft in der Rolle, die die Rolle besitzt.

  • ALTER ANY ROLE- oder ALTER-Berechtigung für die Rolle

Zum Hinzufügen von Mitgliedern zu festen Datenbankrollen ist die Mitgliedschaft in der festen Datenbankrolle db_owner erforderlich.

Beispiele

A.Hinzufügen eines Windows-Anmeldenamens

Im folgenden Beispiel wird der Windows-Anmeldenamen Contoso\Mary5 der AdventureWorks2012-Datenbank als Benutzer Mary5 hinzugefügt. Der Benutzer Mary5 wird dann der Production-Rolle hinzugefügt.

HinweisHinweis

Da Contoso\Mary5 als Datenbankbenutzer Mary5 in der AdventureWorks2012-Datenbank bekannt ist, muss der Benutzername Mary5 angegeben werden. Die Anweisung führt zu einem Fehler, es sei denn, es ist ein Anmeldename Contoso\Mary5 vorhanden. Testen Sie dies, indem Sie einen Anmeldenamen Ihrer Domäne verwenden.

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

B.Hinzufügen eines Datenbankbenutzers

Im folgenden Beispiel wird der Datenbankbenutzer Mary5 der Production-Datenbankrolle in der aktuellen Datenbank hinzugefügt.

EXEC sp_addrolemember 'Production', 'Mary5'

Siehe auch

Verweis

Gespeicherte Sicherheitsprozeduren (Transact-SQL)

sp_addsrvrolemember (Transact-SQL)

sp_droprolemember (Transact-SQL)

sp_grantdbaccess (Transact-SQL)

Gespeicherte Systemprozeduren (Transact-SQL)

Rollen auf Datenbankebene