Condividi tramite


sp_addrolemember (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

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 ROLE autorizzazione o ALTER autorizzazione 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 AdventureWorks2022 database come utente Mary5. L'utente Mary5 viene quindi aggiunto al ruolo Production.

Poiché Contoso\Mary5 è noto come utente del database Mary5 nel database AdventureWorks2022, è 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.

EXEC 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 AdventureWorks2022 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 AdventureWorks2022 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
EXEC 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.

EXEC sp_addrolemember 'Production', 'UserMary'