Condividi tramite


ALTER USER (Transact-SQL)

Rinomina un utente del database oppure ne modifica lo schema predefinito.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

ALTER USER user_name  
     WITH <set_item> [ ,...n ]
<set_item> ::= 
     NAME = new_user_name 
     | DEFAULT_SCHEMA = schema_name
     | LOGIN = login_name

Argomenti

  • user_name
    Specifica il nome con cui viene identificato l'utente all'interno del database.
  • LOGIN **=**login_name
    Riesegue il mapping di un utente in un altro account di accesso modificando l'id di protezione (SID) dell'utente per farlo corrispondere a quello SID dell'account di accesso.
  • NAME **=**new_user_name
    Specifica il nuovo nome dell'utente. new_user_name non deve essere già esistente nel database corrente.
  • DEFAULT_SCHEMA **=**schema_name
    Specifica il primo schema nel quale il server eseguirà una ricerca durante la risoluzione dei nomi di oggetti per l'utente.

Osservazioni

Se DEFAULT_SCHEMA non viene definito, l'utente utilizzerà lo schema dbo come schema predefinito. È possibile impostare DEFAULT_SCHEMA su uno schema che non esiste nel database. È pertanto possibile assegnare uno schema predefinito tramite DEFAULT_SCHEMA a un utente prima della creazione dello schema. DEFAULT_SCHEMA non può essere specificato per un utente mappato a un gruppo di Windows, un certificato o una chiave asimmetrica.

ms176060.note(it-it,SQL.90).gifImportante:
Il valore di DEFAULT_SCHEMA viene ignorato se l'utente è un membro del ruolo predefinito del server sysadmin. Tutti i membri del ruolo predefinito del server sysadmin dispongono di uno schema predefinito di dbo.

È possibile solo modificare il nome di un utente mappato a un account di accesso o un gruppo di Windows se il SID del nuovo nome utente corrisponde al SID registrato nel database. Questa verifica consente di impedire lo spoofing degli account di accesso di Windows nel database.

La clausola WITH LOGIN consente di eseguire nuovamente il mapping di un utente a un diverso account di accesso. Non è possibile rieseguire il mapping di questa clausola degli utenti senza account di accesso, degli utenti a cui viene eseguito il mapping in un certificato o degli utenti a cui viene eseguito il mapping in una chiave asimmetrica. È possibile eseguire il mapping solo degli utenti SQL Server e degli utenti o gruppi di Windows. Impossibile utilizzare la clausola WITH LOGIN per modificare il tipo di utente, ad esempio modificando l'account di Windows con un account di accesso .

Il nome dell'utente verrà automaticamente rinominato nel nome di account di accesso se si tratta di un utente di Windows, se il nome è un nome (contiene una barra rovesciata) di Windows o se non stato specificato alcun nome nuovo per esso e il nome corrente è diverso dal nome di accesso. In caso contrario, l'utente non sarà rinominato a meno che il chiamante non richiami la clausola NAME .

[!NOTA] Un utente che dispone dell'autorizzazione ALTER ANY USER è in grado di modificare lo schema predefinito di qualsiasi utente. È possibile che un utente con uno schema modificato selezioni involontariamente i dati dalla tabella errata o esegua codice dallo schema errato.

Il nome di un utente mappato a un account di accesso di SQL Server, un certificato o una chiave asimmetrica non può contenere il carattere barra rovesciata (\).

ms176060.Caution(it-it,SQL.90).gifAttenzione:
Il funzionamento degli schemi in SQL Server 2005 è diverso rispetto alle versioni precedenti di SQL Server. È possibile che il codice in cui gli schemi sono equivalenti agli utenti del database non restituisca risultati corretti. Non utilizzare le viste del catalogo delle versioni precedenti, inclusa sysobjects, nei database in cui sia già stata utilizzata una delle istruzioni DLL seguenti: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. In questi database è necessario utilizzare le nuove viste del catalogo, in cui si tiene conto della separazione tra entità e schemi introdotta in SQL Server 2005. Per ulteriori informazioni sulle viste del catalogo, vedere Viste del catalogo (Transact-SQL).

Autorizzazioni

Per modificare il nome di un utente, è richiesta l'autorizzazione ALTER ANY USER per il database. Per modificare lo schema predefinito, è richiesta l'autorizzazione ALTER per l'utente. Un utente può modificare il proprio schema predefinito.

Richiede autorizzazione CONTROL sul database per eseguire un nuovo mapping di utente in un nuovo account di accesso.

Esempi

A. Modifica del nome di un utente del database

Nell'esempio seguente il nome dell'utente del database Mary5 viene modificato in Mary51.

USE AdventureWorks;
ALTER USER Mary5 WITH NAME = Mary51;
GO 

B. Modifica dello schema predefinito di un utente

Nell'esempio seguente lo schema predefinito dell'utente Mary51 viene modificato in Purchasing.

USE AdventureWorks;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

Vedere anche

Riferimento

CREATE USER (Transact-SQL)
DROP USER (Transact-SQL)
EVENTDATA (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005