sp_addrolemember (Transact-SQL)

Gilt für:yes SQL Server (alle unterstützten Versionen) YesAzure SQL-Datenbank YesAzure SQL verwaltete Instanz yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

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

Wichtig

Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Verwenden Sie stattdessen ALTER ROLE .

Topic link iconTransact-SQL-Syntaxkonventionen

Syntax

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

Hinweis

Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Argumente

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

[ @membername= ] '@membername='
Das Sicherheitskonto, das der Rolle hinzugefügt wird. security_account ist ein sysname ohne Standard. security_account kann ein Datenbankbenutzer, eine Datenbankrolle, eine Windows-Anmeldung oder eine Windows sein.

Rückgabecodewerte

„0“ (erfolgreich) oder „1“ (fehlerhaft)

Bemerkungen

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 einer Rolle keine feste Datenbankrolle, feste Serverrolle oder dbo hinzufügen.

Verwenden Sie ausschließlich sp_addrolemember, um einer Datenbankrolle ein Mitglied hinzuzufügen. Verwenden Sie zum Hinzufügen eines Mitglieds zu einer Serverrolle sp_addsrvrolemember (Transact-SQL).

Berechtigungen

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

  • Mitgliedschaft in der db_securityadmin oder db_owner festen Datenbankrolle.

  • Mitgliedschaft in der Rolle, die die Rolle besitzt.

  • ALTER ANY ROLE-Berechtigung 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 der Contoso\Mary5 Datenbank AdventureWorks2012 als Benutzer hinzugefügtMary5. Der Benutzer Mary5 wird dann der Production-Rolle hinzugefügt.

Hinweis

Da Contoso\Mary5 in der Mary5 AdventureWorks2012-Datenbank als Datenbankbenutzer bezeichnet wird, muss der Mary5 Benutzername 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  

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';  

Beispiele: Analytics Platform System (PDW)

C. Hinzufügen eines Windows-Anmeldenamens

Im folgenden Beispiel wird der -Anmeldename LoginMary der -Datenbank AdventureWorks2008R2 als Benutzer hinzugefügt UserMary. Der Benutzer UserMary wird dann der Production-Rolle hinzugefügt.

Hinweis

Da die Anmeldung LoginMary in der UserMary AdventureWorks2012-Datenbank als Datenbankbenutzer bezeichnet wird, muss der UserMary Benutzername angegeben werden. Die Anweisung führt zu einem Fehler, es sei denn, es ist ein Anmeldename Mary5 vorhanden. Anmeldungen und Benutzer haben in der Regel denselben Namen. In diesem Beispiel werden unterschiedliche Namen verwendet, um die Aktionen zu unterscheiden, die sich auf die Anmeldung und den Benutzer beeinflussen.

-- Uses AdventureWorks  
  
CREATE USER UserMary FOR LOGIN LoginMary ;  
GO  
EXEC sp_addrolemember 'Production', 'UserMary'  

D: Hinzufügen eines Datenbankbenutzers

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

EXEC sp_addrolemember 'Production', 'UserMary'  

Weitere Informationen

Gespeicherte Sicherheitsprozeduren (Transact-SQL)
sp_addsrvrolemember (Transact-SQL)
sp_droprolemember (Transact-SQL)
sp_grantdbaccess (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)
Rollen auf Datenbankebene