ALTER USER (Transact-SQL)
Rinomina un utente del database oppure ne modifica lo schema predefinito.
Convenzioni 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.
Importante: |
---|
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 (\).
Attenzione: |
---|
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)