Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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 ROLEZgoda lub zgoda naALTERrolę.
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';