Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema di Piattaforma Analitica (PDW)
Database SQL in Microsoft Fabric
Aggiunge un utente del database, un ruolo del database, un account di accesso di Windows o un gruppo di Windows a un ruolo del database nel database corrente.
Importante
Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. In alternativa, usare ALTER ROLE .
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_addrolemember
[ @rolename = ] N'rolename'
, [ @membername = ] N'membername'
[ ; ]
Nota
Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.
Argomenti
[ @rolename = ] N'rolename'
Nome del ruolo del database nel database corrente. @rolename è sysname, senza impostazione predefinita.
[ @membername = ] N'membername'
Account di sicurezza aggiunto al ruolo. @membername è sysname, senza impostazione predefinita. @membername può essere un utente del database, un ruolo del database, un account di accesso di Windows o un gruppo di Windows.
Valori del codice restituito
0 (esito positivo) o 1 (errore).
Osservazioni:
Un membro aggiunto a un ruolo tramite sp_addrolemember eredita le autorizzazioni del ruolo. Se il nuovo membro è un'entità a livello di Windows senza un utente del database corrispondente, viene creato un utente del database, ma potrebbe non essere completamente mappato all'account di accesso. Verificare sempre che l'account di accesso esista e che sia in grado di accedere al database.
Un ruolo non può includere se stesso come membro. Tali definizioni circolari non sono valide, anche quando l'appartenenza è implicita indirettamente da una o più appartenenze intermedie.
sp_addrolemember non può aggiungere un ruolo predefinito del database, un ruolo predefinito del server o un dbo a un ruolo.
Usare sp_addrolemember solo per aggiungere un membro a un ruolo del database. Per aggiungere un membro a un ruolo del server, usare sp_addsrvrolemember.
Autorizzazioni
L'aggiunta di membri ai ruoli flessibili del database richiede una delle autorizzazioni seguenti:
Appartenenza al ruolo predefinito del database db_securityadmin o db_owner .
Appartenenza al ruolo proprietario del ruolo.
ALTER ANY ROLEautorizzazione oALTERautorizzazione per il ruolo.
L'aggiunta di membri ai ruoli predefiniti del database richiede l'appartenenza al ruolo predefinito del database db_owner .
Esempi
R. Aggiungere un account di accesso di Windows
Nell'esempio seguente viene aggiunto l'account di accesso Contoso\Mary5 di Windows al AdventureWorks2025 database come utente Mary5. L'utente Mary5 viene quindi aggiunto al ruolo Production.
Poiché Contoso\Mary5 è noto come utente del database Mary5 nel database AdventureWorks2025, è necessario specificare il nome utente Mary5. L'istruzione non riesce a meno che non esista un Contoso\Mary5 account di accesso. Eseguire un test mediante un account di accesso dal dominio.
USE AdventureWorks2022;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5];
GO
B. Aggiungere un utente del database
Nell'esempio seguente l'utente del database Mary5 viene aggiunto al ruolo del database Production nel database corrente.
EXECUTE sp_addrolemember 'Production', 'Mary5';
Esempi: Piattaforma di strumenti analitici (PDW)
C. Aggiungere un account di accesso di Windows
Nell'esempio seguente viene aggiunto l'account di accesso LoginMary al AdventureWorks2025 database come utente UserMary. L'utente UserMary viene quindi aggiunto al ruolo Production.
Nota
Poiché l'account di accesso LoginMary è noto come utente UserMary del AdventureWorks2025 database nel database, è necessario specificare il nome UserMary utente. L'istruzione non verrà eseguita correttamente se non esiste un account di accesso Mary5. Gli account di accesso e gli utenti hanno in genere lo stesso nome. In questo esempio vengono usati nomi diversi per distinguere le azioni che influiscono sull'account di accesso rispetto all'utente.
-- Uses AdventureWorks2022
CREATE USER UserMary FOR LOGIN LoginMary;
GO
EXECUTE sp_addrolemember 'Production', 'UserMary';
D. Aggiungere un utente del database
Nell'esempio seguente l'utente del database UserMary viene aggiunto al ruolo del database Production nel database corrente.
EXECUTE sp_addrolemember 'Production', 'UserMary';