sp_addrolemember (Transact-SQL)sp_addrolemember (Transact-SQL)

SI APPLICA A: sìSQL Server (a partire dalla versione 2008) sìDatabase SQL di AzuresìAzure SQL Data Warehouse sìParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

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.Adds a database user, database role, Windows login, or Windows group to a database role in the current database.

Importante

Questa funzionalità è in manutenzione e potrebbe essere rimossa in una delle prossime versioni di Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Uso ALTER ROLE invece. Use ALTER ROLE instead.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

-- Syntax for SQL Server and Azure SQL Database  

sp_addrolemember [ @rolename = ] 'role',  
    [ @membername = ] 'security_account'  
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  

sp_addrolemember 'role', 'security_account'  

ArgomentiArguments

[ @rolename=] 'ruolo'[ @rolename= ] 'role'
Nome del ruolo del database nel database corrente.Is the name of the database role in the current database. ruolo è un sysname, non prevede alcun valore predefinito.role is a sysname, with no default.

[ @membername=] 'account_protezione'[ @membername= ] 'security_account'
Account di sicurezza aggiunto al ruolo.Is the security account being added to the role. account_protezione è un sysname, non prevede alcun valore predefinito.security_account is a sysname, with no default. account_protezione può essere un utente del database, ruolo predefinito del database, account di accesso di Windows o il gruppo di Windows.security_account can be a database user, database role, Windows login, or Windows group.

Valori restituitiReturn Code Values

0 (esito positivo) o 1 (esito negativo)0 (success) or 1 (failure)

NoteRemarks

Un membro aggiunto al ruolo tramite la stored procedure sp_addrolemember eredita le autorizzazioni del ruolo.A member added to a role by using sp_addrolemember inherits the permissions of the role. 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.If the new member is a Windows-level principal without a corresponding database user, a database user will be created but may not be fully mapped to the login. Verificare sempre che l'account di accesso esista e che sia in grado di accedere al database.Always check that the login exists and has access to the database.

Un ruolo non può includere sé stesso come membro.A role cannot include itself as a member. Tali definizioni "circolari" non sono valide anche quando l'appartenenza è indirettamente sottintesa da una o più appartenenze intermedie.Such "circular" definitions are not valid, even when membership is only indirectly implied by one or more intermediate memberships.

sp_addrolemember non è possibile aggiungere un ruolo predefinito del database, ruolo predefinito del server o dbo a un ruolo.sp_addrolemember cannot add a fixed database role, fixed server role, or dbo to a role. sp_addrolemember non può essere eseguita all'interno di una transazione definita dall'utente.sp_addrolemember cannot be executed within a user-defined transaction.

Utilizzare sp_addrolemember solo per aggiungere un membro a un ruolo del database.Only use sp_addrolemember to add a member to a database role. Per aggiungere un membro a un ruolo del server, utilizzare sp_addsrvrolemember (Transact-SQL).To add a member to a server role, use sp_addsrvrolemember (Transact-SQL).

PermissionsPermissions

Per l'aggiunta di membri ai ruoli del database flessibili è necessario uno degli elementi seguenti:Adding members to flexible database roles requires one of the following:

  • Appartenenza al ruolo predefinito del database db_owner o db_securityadmin.Membership in the db_securityadmin or db_owner fixed database role.

  • Appartenenza al ruolo proprietario del ruolo.Membership in the role that owns the role.

  • ALTER ANY ROLE autorizzazione oppure ALTER autorizzazione per il ruolo.ALTER ANY ROLE permission or ALTER permission on the role.

    Per l'aggiunta di membri ai ruoli predefiniti del database è necessaria l'appartenenza al ruolo predefinito del database db_owner.Adding members to fixed database roles requires membership in the db_owner fixed database role.

EsempiExamples

A.A. Aggiunta di un account di accesso di WindowsAdding a Windows login

L'esempio seguente aggiunge l'account di accesso di Windows Contoso\Mary5 per il AdventureWorks2012 database come utente Mary5.The following example adds the Windows login Contoso\Mary5 to the AdventureWorks2012 database as user Mary5. L'utente Mary5 viene quindi aggiunto al ruolo Production.The user Mary5 is then added to the Production role.

Nota

Poiché Contoso\Mary5 è noto come utente del database Mary5 nel database AdventureWorks2012AdventureWorks2012, è necessario specificare il nome utente Mary5.Because Contoso\Mary5 is known as the database user Mary5 in the AdventureWorks2012AdventureWorks2012 database, the user name Mary5 must be specified. L'istruzione non verrà eseguita correttamente se non esiste un account di accesso Contoso\Mary5.The statement will fail unless a Contoso\Mary5 login exists. Eseguire un test mediante un account di accesso dal dominio.Test by using a login from your domain.

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

B.B. Aggiunta di un utente del databaseAdding a database user

Nell'esempio seguente l'utente del database Mary5 viene aggiunto al ruolo del database Production nel database corrente.The following example adds the database user Mary5 to the Production database role in the current database.

EXEC sp_addrolemember 'Production', 'Mary5';  

Esempi: SQL Data WarehouseSQL Data Warehouse e Parallel Data WarehouseParallel Data WarehouseExamples: SQL Data WarehouseSQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

C.C. Aggiunta di un account di accesso di WindowsAdding a Windows login

L'esempio seguente aggiunge l'account di accesso LoginMary per il AdventureWorks2008R2 database come utente UserMary.The following example adds the login LoginMary to the AdventureWorks2008R2 database as user UserMary. L'utente UserMary viene quindi aggiunto al ruolo Production.The user UserMary is then added to the Production role.

Nota

Poiché l'account di accesso LoginMary è noto come utente del database UserMary nel AdventureWorks2012AdventureWorks2012 del database, il nome utente UserMary deve essere specificato.Because the login LoginMary is known as the database user UserMary in the AdventureWorks2012AdventureWorks2012 database, the user name UserMary must be specified. L'istruzione non verrà eseguita correttamente se non esiste un account di accesso Mary5.The statement will fail unless a Mary5 login exists. Gli account di accesso e utenti in genere hanno lo stesso nome.Logins and users usually have the same name. In questo esempio Usa nomi diversi per differenziare le azioni che interessano l'account di accesso e l'utente.This example uses different names to differentiate the actions affecting the login vs. the user.

-- Uses AdventureWorks  

CREATE USER UserMary FOR LOGIN LoginMary ;  
GO  
EXEC sp_addrolemember 'Production', 'UserMary'  

D.D. Aggiunta di un utente del databaseAdding a database user

Nell'esempio seguente l'utente del database UserMary viene aggiunto al ruolo del database Production nel database corrente.The following example adds the database user UserMary to the Production database role in the current database.

EXEC sp_addrolemember 'Production', 'UserMary'  

Vedere ancheSee Also

Stored procedure di sicurezza (Transact-SQL) Security Stored Procedures (Transact-SQL)
sp_addsrvrolemember (Transact-SQL) sp_addsrvrolemember (Transact-SQL)
sp_droprolemember (Transact-SQL) sp_droprolemember (Transact-SQL)
sp_grantdbaccess (Transact-SQL) sp_grantdbaccess (Transact-SQL)
Stored procedure di sistema (Transact-SQL) System Stored Procedures (Transact-SQL)
Ruoli a livello di databaseDatabase-Level Roles