sp_addrolemember (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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

Wichtig

Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. 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 .

Transact-SQL-Syntaxkonventionen

Syntax

sp_addrolemember
    [ @rolename = ] N'rolename'
    , [ @membername = ] N'membername'
[ ; ]

Hinweis

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

Argumente

[ @rolename = ] N'rolename'

Der Name der Datenbankrolle in der aktuellen Datenbank. @rolename ist "sysname" ohne Standard.

[ @membername = ] N'membername'

Das Sicherheitskonto, das der Rolle hinzugefügt wird. @membername ist "sysname" ohne Standard. @membername kann ein Datenbankbenutzer, eine Datenbankrolle, eine Windows-Anmeldung oder eine Windows-Gruppe sein.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

Ein Mitglied, das einer Rolle hinzugefügt wird, erbt sp_addrolemember die Berechtigungen der Rolle. Wenn das neue Mitglied ein Prinzipal auf Windows-Ebene ohne einen entsprechenden Datenbankbenutzer ist, wird ein Datenbankbenutzer erstellt, aber 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 nicht als Mitglied einschließen. Solche Zirkeldefinitionen sind nicht gültig, auch wenn die Mitgliedschaft indirekt durch eine oder mehrere Zwischenmitgliedschaften impliziert wird.

sp_addrolemember einer Rolle kann keine feste Datenbankrolle, eine feste Serverrolle oder ein Dbo hinzugefügt werden.

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

Berechtigungen

Das Hinzufügen von Mitgliedern zu flexiblen Datenbankrollen erfordert eine der folgenden Berechtigungen:

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

Das Hinzufügen von Mitgliedern zu festen Datenbankrollen erfordert die Mitgliedschaft in der db_owner festen Datenbankrolle.

Beispiele

A. Hinzufügen einer Windows-Anmeldung

Im folgenden Beispiel wird die Windows-Anmeldung Contoso\Mary5 der AdventureWorks2022 Datenbank als Benutzer Mary5hinzugefügt. Der Benutzer Mary5 wird dann der Production-Rolle hinzugefügt.

Da Contoso\Mary5 als Datenbankbenutzer Mary5 in der AdventureWorks2022-Datenbank bekannt ist, muss der Benutzername Mary5 angegeben werden. Die Anweisung schlägt fehl, es sei denn, eine Contoso\Mary5 Anmeldung ist vorhanden. Testen Sie dies, indem Sie einen Anmeldenamen Ihrer Domäne verwenden.

USE AdventureWorks2022;
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-Plattformsystem (PDW)

C. Hinzufügen einer Windows-Anmeldung

Im folgenden Beispiel wird der Datenbank als Benutzer UserMarydie Anmeldung LoginMaryAdventureWorks2022 hinzugefügt. Der Benutzer UserMary wird dann der Production-Rolle hinzugefügt.

Hinweis

Da die Anmeldung LoginMary als Datenbankbenutzer UserMary in der AdventureWorks2022 Datenbank bezeichnet wird, muss der Benutzername UserMary 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 verschiedene Namen verwendet, um die Aktionen zu unterscheiden, die sich auf die Anmeldung und den Benutzer auswirken.

-- Uses AdventureWorks2022
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'