Udostępnij za pomocą


sp_addrolemember (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w Microsoft Fabric

Dodaje użytkownika bazy danych, rolę bazy danych, identyfikator logowania systemu Windows lub grupę systemu Windows do roli bazy danych w bieżącej bazie danych.

Ważne

Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zamiast tego używaj ALTER ROLE .

Transact-SQL konwencje składni

Składnia

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

Uwaga / Notatka

Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.

Arguments

[ @rolename = ] N'rolename'

Nazwa roli bazy danych w aktualnej bazie danych. @rolename to sysname, bez domyślnego ustawienia.

[ @membername = ] N'membername'

Konto bezpieczeństwa dodawane do roli. @membername to sysname, bez domyślnego ustawienia. @membername może być użytkownikiem bazy danych, rolą bazy danych, logowaniem do Windows lub grupą Windows.

Zwracanie wartości kodu

0 (powodzenie) lub 1 (niepowodzenie).

Uwagi

Członek dodany do roli poprzez wykorzystanie sp_addrolemember dziedziczy uprawnienia tej roli. Jeśli nowy członek jest podmiotem na poziomie Windows bez odpowiadającego mu użytkownika bazy danych, tworzy się użytkownika bazy danych, ale może nie być w pełni przypisany do logowania. Zawsze sprawdzaj, czy login istnieje i ma dostęp do bazy danych.

Rola nie może być członkiem. Takie definicje kołowe nie są ważne, nawet gdy członkostwo jest pośrednio implikowane przez jedno lub więcej członkostwa pośredniego.

sp_addrolemember Nie można dodać stałej roli bazy danych, stałego serwera ani DBO do roli.

Używam sp_addrolemember tylko do dodawania członka do roli w bazie danych. Aby dodać członka do roli serwera, użyj sp_addsrvrolemember.

Permissions

Dodawanie członków do elastycznych ról baz danych wymaga jednego z następujących uprawnień:

  • Członkostwo w roli db_securityadmin lub db_owner stałej bazie danych.

  • Członkostwo w roli, która ją posiada.

  • ALTER ANY ROLE Zgoda lub zgoda na ALTER rolę.

Dodanie członków do stałych ról baz danych wymaga członkostwa w db_owner stałej roli bazy danych.

Przykłady

A. Dodaj logowanie do Windows

Poniższy przykład dodaje logowanie Contoso\Mary5 do Windows do bazy AdventureWorks2025 danych jako użytkownik Mary5. Następnie użytkownik Mary5 jest dodawany do roli Production .

Ponieważ Contoso\Mary5 w bazie Mary5 danych jest znany jako użytkownik AdventureWorks2025 bazy danych, należy podać nazwę Mary5 użytkownika. Oświadczenie nie działa, chyba że Contoso\Mary5 istnieje logowanie. Sprawdź, logując się ze swojej domeny.

USE AdventureWorks2022;
GO

CREATE USER Mary5 FOR LOGIN [Contoso\Mary5];
GO

B. Dodaj użytkownika bazy danych

Poniższy przykład dodaje użytkownika Mary5 bazy danych do roli bazy Production danych w aktualnej bazie danych.

EXECUTE sp_addrolemember 'Production', 'Mary5';

Przykłady: Analytics Platform System (PDW)

C. Dodaj logowanie do Windows

Poniższy przykład dodaje logowanie LoginMary do bazy AdventureWorks2025 danych jako użytkownik UserMary. Następnie użytkownik UserMary jest dodawany do roli Production .

Uwaga / Notatka

Ponieważ logowanie LoginMary jest znane jako użytkownik UserMary bazy danych w bazie AdventureWorks2025 , należy podać nazwę UserMary użytkownika. Oświadczenie nie zadziała, jeśli nie istnieje Mary5 logowanie. Loginy i użytkownicy zazwyczaj mają tę samą nazwę. Ten przykład używa różnych nazw, aby rozróżnić działania wpływające na logowanie od użytkownika.

-- Uses AdventureWorks2022
CREATE USER UserMary FOR LOGIN LoginMary;
GO

EXECUTE sp_addrolemember 'Production', 'UserMary';

D. Dodaj użytkownika bazy danych

Poniższy przykład dodaje użytkownika UserMary bazy danych do roli bazy Production danych w aktualnej bazie danych.

EXECUTE sp_addrolemember 'Production', 'UserMary';