Condividi tramite


sp_adduser (Transact-SQL)

Aggiunge un nuovo utente al database corrente.

Nota importanteImportante

Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa caratteristica in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Utilizzare CREATE USER in alternativa.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_adduser [ @loginame = ] 'login' 
        [ , [ @name_in_db = ] 'user' ] 
        [ , [ @grpname = ] 'role' ] 

Argomenti

  • [ @loginame = ] 'login'
    Nome dell'account di accesso di SQL Server o dell'account di accesso di Windows. login è di tipo sysname e non prevede alcun valore predefinito. login deve essere un account di accesso di SQL Server o un account di accesso di Windows esistente.

  • [ @name_in_db = ] 'user'
    Nome del nuovo utente del database. user è di tipo sysname e il valore predefinito è NULL. Se user viene omesso, per impostazione predefinita il nome del nuovo utente del database viene impostato sul nome definito tramite login. Se si specifica user, il nome del nuovo utente nel database risulta diverso da quello dell'account di accesso a livello di server.

  • [ @grpname = ] 'role'
    Ruolo del database di cui è membro il nuovo utente. role è di tipo sysname e il valore predefinito è NULL. role deve essere un ruolo del database valido nel database corrente.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

La stored procedure sp_adduser creerà inoltre uno schema con lo stesso nome dell'utente.

Dopo avere aggiunto un utente, utilizzare le istruzioni GRANT, DENY e REVOKE per definire le autorizzazioni per controllare le attività che l'utente può svolgere.

Utilizzare sys.server_principals per visualizzare l'elenco dei nomi degli account di accesso validi.

Utilizzare sp_helprole per visualizzare l'elenco dei nomi di ruolo validi. Se si specifica un ruolo, l'utente ottiene automaticamente le autorizzazioni definite per tale ruolo. Se non viene specificato alcun ruolo, l'utente ottiene le autorizzazioni valide del ruolo predefinito public. Per aggiungere un utente a un ruolo, è necessario specificare un valore per user name. (username può corrispondere a login_id.

L'utente guest esiste già in ogni database. L'aggiunta dell'utente guest attiverà questo utente se è stato precedentemente disattivato. Per impostazione predefinita, l'utente guest è disattivato nei nuovi database.

La stored procedure sp_adduser non può essere eseguita in una transazione definita dall'utente.

Non è possibile aggiungere un utente guest perché tale utente esiste già in ogni database. Per attivare l'utente guest, concedere l'autorizzazione CONNECT a guest come illustrato di seguito:

GRANT CONNECT TO guest;
GO

Autorizzazioni

È necessario essere il proprietario del database.

Esempi

A. Aggiunta di un utente del database

Nell'esempio seguente l'utente del database Vidur viene aggiunto al ruolo esistente Recruiting nel database corrente utilizzando l'account di accesso di SQL Server esistente Vidur.

EXEC sp_adduser 'Vidur', 'Vidur', 'Recruiting'

B. Aggiunta di un utente del database con lo stesso ID di accesso

Nell'esempio seguente l'utente Arvind viene aggiunto al database corrente per l'account di accesso di SQL ServerArvind. Questo utente appartiene al ruolo predefinito public.

EXEC sp_adduser 'Arvind'

C. Aggiunta di un utente del database con un nome diverso dall'account di accesso a livello di server

Nell'esempio seguente l'account di accesso di SQL ServerBjornR viene aggiunto al database corrente che include il nome utente Bjorn, quindi l'utente del database Bjorn viene aggiunto al ruolo del database Production.

EXEC sp_adduser 'BjornR', 'Bjorn', 'Production'