Condividi tramite


sp_addrolemember (Transact-SQL)

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.

Nota importanteImportante

Questa funzionalità verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. In alternativa, utilizzare ALTER ROLE.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

sp_addrolemember [ @rolename = ] 'role',
    [ @membername = ] 'security_account'

Argomenti

  • [ @rolename= ] 'role'
    Nome del ruolo del database nel database corrente. role è di tipo sysname e non prevede alcun valore predefinito.

  • [ @membername= ] 'security_account'
    Account di sicurezza aggiunto al ruolo. security_account è di tipo sysname e non prevede alcun valore predefinito. security_account può essere un utente del database, un ruolo del database, un account di accesso di Windows oppure un gruppo di Windows.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

Un membro aggiunto al ruolo tramite la stored procedure sp_addrolemember eredita le autorizzazioni del ruolo. Se il nuovo membro è un'entità a livello di Windows senza un corrispondente utente del database, verrà creato un utente del database, di cui tuttavia potrebbe non essere eseguito completamente il mapping 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 sé stesso come membro. Tali definizioni "circolari" non sono valide anche quando l'appartenenza è indirettamente sottintesa da una o più appartenenze intermedie.

sp_addrolemember non è in grado di aggiungere un ruolo predefinito del database, un ruolo predefinito del server o un ruolo dbo a un ruolo. La stored procedure sp_addrolemember non può essere eseguita all'interno di una transazione definita dall'utente.

Utilizzare sp_addrolemember solo per aggiungere un membro a un ruolo del database. Per aggiungere un membro a un ruolo del server, utilizzare sp_addsrvrolemember (Transact-SQL).

Autorizzazioni

Per l'aggiunta di membri ai ruoli del database flessibili è necessario uno degli elementi seguenti:

  • Appartenenza al ruolo predefinito del database db_securityadmin o db_owner.

  • Appartenenza al ruolo proprietario del ruolo.

  • Autorizzazione ALTER ANY ROLE o ALTER sul ruolo.

Per l'aggiunta di membri ai ruoli predefiniti del database è richiesta l'appartenenza al ruolo predefinito del database db_owner.

Esempi

A.Aggiunta di un account di accesso di Windows

Nell'esempio seguente l'account di accesso di Windows Contoso\Mary5 viene aggiunto al database AdventureWorks2012 come utente Mary5. L'utente Mary5 viene quindi aggiunto al ruolo Production.

[!NOTA]

Poiché Contoso\Mary5 è noto come utente del database Mary5 nel database AdventureWorks2012, è necessario specificare il nome utente Mary5. L'istruzione non verrà eseguita correttamente se non esiste un account di accesso Contoso\Mary5. Eseguire un test mediante un account di accesso dal dominio.

USE AdventureWorks2012;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5] ;
GO
EXEC sp_addrolemember 'Production', 'Mary5'

B.Aggiunta di 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'

Vedere anche

Riferimento

Stored procedure di sicurezza (Transact-SQL)

sp_addsrvrolemember (Transact-SQL)

sp_droprolemember (Transact-SQL)

sp_grantdbaccess (Transact-SQL)

Stored procedure di sistema (Transact-SQL)

Ruoli a livello di database