ALTER USER (Transact-SQL)
Rinomina un utente del database oppure ne modifica lo schema predefinito.
Convenzioni relative alla sintassi Transact-SQL
Nota
Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).
Selezionare un prodotto
Nella riga seguente selezionare il nome del prodotto a cui si è interessati. Verranno visualizzate solo le informazioni per tale prodotto.
* SQL Server *
SQL Server
Sintassi
-- Syntax for SQL Server
ALTER USER user_name
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
Argomenti
user_name
Specifica il nome con cui viene identificato l'utente all'interno del database.
LOGIN = login_name
Modifica il mapping di un utente associandolo a un altro account di accesso, modificando l'ID di sicurezza (SID) dell'utente in modo che corrisponda all'ID di sicurezza dell'account di accesso.
NAME = new_user_name
Specifica il nuovo nome dell'utente. new_user_name non deve esistere già nel database corrente.
DEFAULT_SCHEMA = { schema_name | NULL }
Specifica il primo schema nel quale il server eseguirà una ricerca durante la risoluzione dei nomi di oggetti per l'utente. L'impostazione dello schema predefinito su NULL comporta la rimozione di uno schema predefinito da un gruppo di Windows. Non è possibile usare NULL con un utente di Windows.
PASSWORD = 'password'
si applica a: SQL Server 2012 (11.x) e versioni successive, database SQL di Azure.
Specifica la password per l'utente che viene modificato. Per le password viene fatta distinzione tra maiuscole e minuscole.
Nota
Questa opzione è disponibile solo per gli utenti contenuti. Per altre informazioni, vedere Database indipendenti e sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD ='oldpassword'
si applica a: SQL Server 2012 (11.x) e versioni successive, database SQL di Azure.
Password dell'utente corrente che verrà sostituita da 'password'. Per le password viene fatta distinzione tra maiuscole e minuscole. OLD_PASSWORD è necessaria per modificare una password, a meno che non si disponga dell'autorizzazione ALTER ANY USER. Si richiede OLD_PASSWORD per impedire agli utenti con autorizzazione IMPERSONATION di modificare la password.
Nota
Questa opzione è disponibile solo per gli utenti contenuti.
DEFAULT_LANGUAGE ={ NONE | <lcid> |> nome lingua <|> alias lingua <}
Si applica a: SQL Server 2012 (11.x) e versioni successive.
Specifica una lingua predefinita da assegnare all'utente. Se questa opzione è impostata su NONE, la lingua predefinita viene impostata sulla lingua predefinita corrente del database. Se la lingua predefinita del database viene modificata in un secondo momento, la lingua predefinita dell'utente rimane invariata. DEFAULT_LANGUAGE può essere l'ID locale (lcid), il nome della lingua o l'alias della lingua.
Nota
Questa opzione può essere specificata solo in un database indipendente e solo per gli utenti indipendenti.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
si applica a: SQL Server 2016 (13.x) e versioni successive, database SQL di Azure.
Elimina i controlli sui metadati di crittografia nel server nelle operazioni di copia bulk. Ciò consente all'utente di eseguire la copia bulk dei dati crittografati tra tabelle o database senza decrittografare i dati. Il valore predefinito è OFF.
Avviso
L'uso improprio di questa opzione può causare il danneggiamento dei dati. Per altre informazioni, vedere caricamento bulk dei dati crittografati in colonne tramite Always Encrypted.
Osservazioni:
Lo schema predefinito sarà il primo schema in cui verrà eseguita la ricerca nel server durante la risoluzione dei nomi di oggetti per l'utente del database. Se non specificato diversamente, lo schema predefinito sarà il proprietario degli oggetti creati dall'utente del database.
Se l'utente ha uno schema predefinito, verrà usato lo schema predefinito. Se l'utente non ha uno schema predefinito ma è membro di un gruppo che ha uno schema predefinito, verrà usato lo schema predefinito del gruppo. Se l'utente non ha uno schema predefinito ed è membro di più di un gruppo, lo schema predefinito per l'utente sarà quello del gruppo di Windows con il valore principal_id più basso e uno schema predefinito impostato in modo esplicito. Se non è possibile determinare uno schema predefinito per un utente, viene usato lo schema dbo
.
DEFAULT_SCHEMA può essere impostato su uno schema che attualmente non è presente nel database. È pertanto possibile assegnare uno schema predefinito tramite DEFAULT_SCHEMA a un utente prima della creazione dello schema.
Non è possibile specificare DEFAULT_SCHEMA per un utente di cui è stato eseguito il mapping a un certificato o a 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 modificare il nome di un utente sul quale viene eseguito il mapping a un account di accesso o a un gruppo di Windows solo 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 il mapping di un utente a un account di accesso diverso. Non è possibile modificare con questa clausola il mapping degli utenti che non hanno un account di accesso o degli utenti con mapping a un certificato o a una chiave asimmetrica. È possibile modificare il mapping solo di utenti di SQL e di utenti (o gruppi) di Windows. La clausola WITH LOGIN
non può essere usata per modificare il tipo di utente, ad esempio la modifica di un account di Windows in un account di accesso di SQL Server.
Un SID può non essere corrispondente quando viene ripristinato un database da un altro server ed è presente un utente del database di cui è stato eseguito il mapping a un account di accesso SQL Server. È possibile utilizzare la clausola WITH LOGIN
per risolvere questa situazione sostituendo il SID utente nel database con il SID di accesso dal server.
Se vengono soddisfatte le seguenti condizioni, il nome dell'utente viene automaticamente modificando nel nome dell'account di accesso.
L'utente è un utente di Windows.
Il nome è un nome di Windows (contiene una barra rovesciata).
Non è stato specificato alcun nome.
Il nome corrente è diverso dal nome dell'account di accesso.
In caso contrario, l'utente non verrà rinominato a meno che il chiamante non richiami anche la clausola NAME
.
Il nome di un utente mappato a un account di accesso di SQL Server, a un certificato o a una chiave asimmetrica non può contenere il carattere barra rovesciata (\
).
Attenzione
A partire da SQL Server 2005, il funzionamento degli schemi è stato modificato. È pertanto possibile che il codice in cui gli schemi vengono considerati 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 DDL 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 tali database è invece necessario usare le nuove viste del catalogo. Le nuove viste del catalogo prendono in considerazione la separazione tra entità e schemi introdotta in SQL Server 2005. Per altre informazioni sulle viste del catalogo, vedere Viste del catalogo (Transact-SQL).
Sicurezza
Nota
Un utente con autorizzazione ALTER ANY USER può 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.
Autorizzazioni
Per modificare il nome di un utente, è necessaria l'autorizzazione ALTER ANY USER.
Per modificare l'account di accesso di destinazione di un utente, è necessaria l'autorizzazione CONTROL per il database.
Per modificare il nome di un utente con autorizzazione CONTROL per il database, è necessaria l'autorizzazione CONTROL per il database.
Per modificare la lingua o lo schema predefinito, è necessaria l'autorizzazione ALTER per l'utente. Gli utenti possono modificare il proprio schema predefinito o la lingua.
Esempi
Tutti gli esempi vengono eseguiti in un database utente.
R. Modificare il nome di un utente del database
Nell'esempio seguente il nome dell'utente del database Mary5
viene modificato in Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Modificare lo schema predefinito di un utente
Nell'esempio seguente lo schema predefinito dell'utente Mary51
viene modificato in Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. Modificare più opzioni contemporaneamente
Si applica a: SQL Server 2012 (11.x) e versioni successive.
Nell'esempio seguente vengono modificate diverse opzioni per un utente del database indipendente in un'istruzione. Sostituire <new strong password here>
e <old strong password here>
con valori personalizzati.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>'
, DEFAULT_LANGUAGE= French ;
GO
D. Correggere un SID non corrispondente
Nell'esempio seguente viene corretto il SID utente nel database in modo che corrisponda al SID nel server per un account di accesso SQL Server autenticato.
ALTER USER Mai
WITH LOGIN = Mai;
GO
Contenuto correlato
* Database SQL di Azure e Microsoft Fabric *
Database SQL di Azure e Microsoft Fabric
Sintassi
Sintassi per il database SQL di Azure
-- Syntax for Azure SQL Database
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = schema_name
| LOGIN = login_name
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
[;]
-- Azure SQL Database Update Syntax
ALTER USER user_name
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
-- SQL Database syntax when connected to a federation member
ALTER USER user_name
WITH <set_item> [ ,... n ]
[;]
<set_item> ::=
NAME = new_user_name
Sintassi per il database SQL in Microsoft Fabric
ALTER USER
{
Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid']
}
[ ; ]
-- Users that cannot authenticate
ALTER USER user_name
{
{ FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<options_list> ::=
DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
-- SQL Database syntax when connected to a federation member
ALTER USER user_name
[;]
Sintassi per Microsoft Fabric Warehouse
-- Syntax for Fabric Data Warehouse
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
| DEFAULT_SCHEMA = schema_name
[;]
Argomenti
user_name
Specifica il nome con cui viene identificato l'utente all'interno del database.
LOGIN = login_name
Modifica il mapping di un utente associandolo a un altro account di accesso, modificando l'ID di sicurezza (SID) dell'utente in modo che corrisponda all'ID di sicurezza dell'account di accesso.
Se l'istruzione ALTER USER è l'unica istruzione in un batch SQL, il database SQL di Azure supporta la clausola WITH LOGIN
. Se l'istruzione ALTER USER non è l'unica istruzione in un batch SQL o viene eseguita in SQL dinamico, la clausola WITH LOGIN
non è supportata.
NAME = new_user_name
Specifica il nuovo nome dell'utente. new_user_name non deve esistere già nel database corrente.
DEFAULT_SCHEMA = { schema_name | NULL }
Specifica il primo schema nel quale il server eseguirà una ricerca durante la risoluzione dei nomi di oggetti per l'utente.
L'impostazione dello schema predefinito su NULL
rimuove uno schema predefinito da un utente creato per un gruppo microsoft Entra ID. L'opzione NULL non può essere usata con qualsiasi altro tipo di utente.
PASSWORD = 'password'
si applica a: database SQL di Azure.
Specifica la password per l'utente che viene modificato. Per le password viene fatta distinzione tra maiuscole e minuscole.
Nota
Questa opzione è disponibile solo per gli utenti contenuti. Per altre informazioni, vedere Database indipendenti e sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD ='oldpassword'
si applica a: database SQL di Azure.
Password dell'utente corrente che verrà sostituita da 'password'. Per le password viene fatta distinzione tra maiuscole e minuscole. OLD_PASSWORD è necessaria per modificare una password, a meno che non si disponga dell'autorizzazione ALTER ANY USER. Si richiede OLD_PASSWORD per impedire agli utenti con autorizzazione IMPERSONATION di modificare la password.
Nota
Questa opzione è disponibile solo per gli utenti contenuti.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
si applica a: SQL Server 2016 (13.x) e versioni successive, database SQL di Azure.
Elimina i controlli sui metadati di crittografia nel server nelle operazioni di copia bulk. Ciò consente all'utente di eseguire la copia bulk dei dati crittografati tra tabelle o database senza decrittografare i dati. Il valore predefinito è OFF.
Avviso
L'uso improprio di questa opzione può causare il danneggiamento dei dati. Per altre informazioni, vedere caricamento bulk dei dati crittografati in colonne tramite Always Encrypted.
Osservazioni:
Lo schema predefinito sarà il primo schema in cui verrà eseguita la ricerca nel server durante la risoluzione dei nomi di oggetti per l'utente del database. Se non specificato diversamente, lo schema predefinito sarà il proprietario degli oggetti creati dall'utente del database.
Se l'utente ha uno schema predefinito, viene usato lo schema predefinito. Se l'utente non ha uno schema predefinito ma è membro di un gruppo che ha uno schema predefinito, verrà usato lo schema predefinito del gruppo. Se l'utente non ha uno schema predefinito ed è membro di più gruppi, lo schema predefinito per l'utente sarà quello del gruppo con il principal_id
più basso e uno schema predefinito impostato in modo esplicito. Se non è possibile determinare uno schema predefinito per un utente, viene usato lo schema dbo
.
DEFAULT_SCHEMA può essere impostato su uno schema che attualmente non è presente nel database. È pertanto possibile assegnare uno schema predefinito tramite DEFAULT_SCHEMA a un utente prima della creazione dello schema.
Non è possibile specificare DEFAULT_SCHEMA per un utente di cui è stato eseguito il mapping a un certificato o a 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
.
La clausola WITH LOGIN
consente il mapping di un utente a un account di accesso diverso. Non è possibile modificare con questa clausola il mapping degli utenti che non hanno un account di accesso o degli utenti con mapping a un certificato o a una chiave asimmetrica. È possibile modificare il mapping solo degli utenti SQL. La clausola WITH LOGIN
non può essere usata per modificare il tipo di utente.
Se vengono soddisfatte le seguenti condizioni, il nome dell'utente viene automaticamente modificando nel nome dell'account di accesso.
Non è stato specificato alcun nome.
Il nome corrente è diverso dal nome dell'account di accesso.
In caso contrario, l'utente non verrà rinominato a meno che il chiamante non richiami anche la clausola NAME
.
Il nome di un utente mappato a un account di accesso di SQL Server, a un certificato o a una chiave asimmetrica non può contenere il carattere barra rovesciata (\
).
Attenzione
A partire da SQL Server 2005, il funzionamento degli schemi è stato modificato. È pertanto possibile che il codice in cui gli schemi vengono considerati 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 DDL 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 tali database è invece necessario usare le nuove viste del catalogo. Le nuove viste del catalogo prendono in considerazione la separazione tra entità e schemi introdotta in SQL Server 2005. Per altre informazioni sulle viste del catalogo, vedere Viste del catalogo (Transact-SQL).
Database SQL dell'infrastruttura
Per altre informazioni, vedere:
- autenticazione nel database SQL di Microsoft Fabric
- autorizzazione nel database SQL di Microsoft Fabric
Warehouse di Fabric
In Microsoft Fabric Warehouse ALTER USER è limitato all'impostazione solo dello schema predefinito. Qualsiasi altro argomento comunemente associato a ALTER USER in SQL o ad altri prodotti non è supportato e restituirà un errore.
In Microsoft Fabric Warehouse il nome delle regole di confronto fa distinzione tra maiuscole e minuscole.
Lo schema predefinito sarà il primo schema in cui verrà eseguita la ricerca nel server durante la risoluzione dei nomi di oggetti per l'utente del database. Se non specificato diversamente, lo schema predefinito sarà il proprietario degli oggetti creati dall'utente del database.
Se un utente ha uno schema predefinito, verrà usato tale schema. Se non viene specificato alcuno schema predefinito, verrà applicato lo schema dbo. Il motore di database tenterà prima di tutto di risolvere gli oggetti nello schema predefinito dell'utente. Se non viene trovato alcun oggetto corrispondente, verrà controllato lo schema dbo.
DEFAULT_SCHEMA può essere impostato su uno schema che non esiste attualmente nel database. È pertanto possibile assegnare uno schema predefinito tramite DEFAULT_SCHEMA a un utente prima della creazione dello schema.
Per altre informazioni, vedere:
- autorizzazioni granulari di SQL in Fabric Warehouse
- Sicurezza per il data warehousing in Microsoft Fabric
Sicurezza
Nota
Un utente con autorizzazione ALTER ANY USER può 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.
Autorizzazioni
Per modificare il nome di un utente, è necessaria l'autorizzazione ALTER ANY USER.
Per modificare l'account di accesso di destinazione di un utente, è necessaria l'autorizzazione CONTROL per il database.
Per modificare il nome di un utente con autorizzazione CONTROL per il database, è necessaria l'autorizzazione CONTROL per il database.
Per modificare la lingua o lo schema predefinito, è necessaria l'autorizzazione ALTER per l'utente. Gli utenti possono modificare il proprio schema predefinito o la lingua.
Autorizzazioni per i ruoli di Fabric Warehouse
Gli utenti con almeno l'appartenenza al ruolo COLLABORATORE nell'area di lavoro possono modificare lo SCHEMA PREDEFINITO di qualsiasi utente in Fabric Data Warehouse.
Gli utenti con appartenenza al ruolo VISUALIZZATOre nell'area di lavoro non possono modificare il proprio schema predefinito, a meno che un utente con accesso con privilegi elevati non conceda questa autorizzazione.
Gli utenti inclusi nel ruolo VIEWER a livello di area di lavoro richiedono l'autorizzazione ALTER ANY USER per modificare lo schema predefinito di altri utenti.
Esempi
Tutti gli esempi vengono eseguiti in un database utente.
R. Modificare il nome di un utente del database
Nell'esempio seguente il nome dell'utente del database Mary5
viene modificato in Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Modificare lo schema predefinito di un utente
Nell'esempio seguente lo schema predefinito dell'utente Mary51
viene modificato in Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. Modificare più opzioni contemporaneamente
Nell'esempio seguente vengono modificate diverse opzioni per un utente del database indipendente in un'istruzione. Sostituire <new strong password here>
e <old strong password here>
con valori personalizzati.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>';
GO
D. Modificare lo schema predefinito di un utente
Nell'esempio seguente lo schema predefinito dell'utente Mary51
viene modificato in Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
Contenuto correlato
* Istanza gestita di SQL *
Istanza gestita di SQL di Azure
Sintassi
Importante
Sono supportate solo le opzioni seguenti per Istanza gestita di SQL di Azure quando si applicano agli utenti con account di accesso di Microsoft Entra: DEFAULT_SCHEMA = { schema_name | NULL }
e DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
è stata aggiunta una nuova estensione della sintassi per eseguire il mapping degli utenti in un database di cui è stata eseguita la migrazione a Istanza gestita di SQL di Azure. La sintassi ALTER USER consente di eseguire il mapping degli utenti di database in un dominio federato e sincronizzato con Microsoft Entra ID, agli account di accesso di Microsoft Entra.
-- Syntax for SQL Managed Instance
ALTER USER user_name
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
-- Users or groups that are migrated as federated and synchronized with Azure AD have the following syntax:
/** Applies to Windows users that were migrated and have the following user names:
- Windows user <domain\user>
- Windows group <domain\MyWindowsGroup>
- Windows alias <MyWindowsAlias>
**/
ALTER USER user_name
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
Argomenti
user_name
Specifica il nome con cui viene identificato l'utente all'interno del database.
LOGIN = login_name
Modifica il mapping di un utente associandolo a un altro account di accesso, modificando l'ID di sicurezza (SID) dell'utente in modo che corrisponda all'ID di sicurezza dell'account di accesso.
Se l'istruzione ALTER USER è l'unica istruzione in un batch SQL, il database SQL di Azure supporta la clausola WITH LOGIN
. Se l'istruzione ALTER USER non è l'unica istruzione in un batch SQL o viene eseguita in SQL dinamico, la clausola WITH LOGIN
non è supportata.
NAME = new_user_name
Specifica il nuovo nome dell'utente. new_user_name non deve esistere già nel database corrente.
DEFAULT_SCHEMA = { schema_name | NULL }
Specifica il primo schema nel quale il server eseguirà una ricerca durante la risoluzione dei nomi di oggetti per l'utente. L'impostazione dello schema predefinito su NULL comporta la rimozione di uno schema predefinito da un gruppo di Windows. L'opzione NULL non può essere usata con un utente di Windows.
PASSWORD = 'password'
Specifica la password per l'utente che viene modificato. Per le password viene fatta distinzione tra maiuscole e minuscole.
Nota
Questa opzione è disponibile solo per gli utenti contenuti. Per altre informazioni, vedere Database indipendenti e sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD = 'oldpassword'
Password dell'utente corrente che verrà sostituita da 'password'. Per le password viene fatta distinzione tra maiuscole e minuscole. OLD_PASSWORD è necessaria per modificare una password, a meno che non si disponga dell'autorizzazione ALTER ANY USER. Si richiede OLD_PASSWORD per impedire agli utenti con autorizzazione IMPERSONATION di modificare la password.
Nota
Questa opzione è disponibile solo per gli utenti contenuti.
DEFAULT_LANGUAGE ={ NONE | <lcid> |> nome lingua <|> alias lingua <}
Specifica una lingua predefinita da assegnare all'utente. Se questa opzione è impostata su NONE, la lingua predefinita viene impostata sulla lingua predefinita corrente del database. Se la lingua predefinita del database viene modificata in seguito, la lingua predefinita dell'utente rimarrà invariata. DEFAULT_LANGUAGE può essere l'ID locale (lcid), il nome della lingua o l'alias della lingua.
Nota
Questa opzione può essere specificata solo in un database indipendente e solo per gli utenti indipendenti.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
Elimina i controlli sui metadati di crittografia nel server nelle operazioni di copia bulk. Ciò consente all'utente di eseguire la copia bulk dei dati crittografati tra tabelle o database senza decrittografare i dati. Il valore predefinito è OFF.
Avviso
L'uso improprio di questa opzione può causare il danneggiamento dei dati. Per altre informazioni, vedere caricamento bulk dei dati crittografati in colonne tramite Always Encrypted.
Osservazioni:
Lo schema predefinito sarà il primo schema in cui verrà eseguita la ricerca nel server durante la risoluzione dei nomi di oggetti per l'utente del database. Se non specificato diversamente, lo schema predefinito sarà il proprietario degli oggetti creati dall'utente del database.
Se l'utente ha uno schema predefinito, viene usato lo schema predefinito. Se l'utente non ha uno schema predefinito ma è membro di un gruppo che ha uno schema predefinito, verrà usato lo schema predefinito del gruppo. Se l'utente non ha uno schema predefinito ed è membro di più di un gruppo, lo schema predefinito per l'utente sarà quello del gruppo di Windows con il valore principal_id più basso e uno schema predefinito impostato in modo esplicito. Se non è possibile determinare uno schema predefinito per un utente, viene usato lo schema dbo
.
DEFAULT_SCHEMA può essere impostato su uno schema che attualmente non è presente nel database. È pertanto possibile assegnare uno schema predefinito tramite DEFAULT_SCHEMA a un utente prima della creazione dello schema.
Non è possibile specificare DEFAULT_SCHEMA per un utente di cui è stato eseguito il mapping a un certificato o a 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 modificare il nome di un utente sul quale viene eseguito il mapping a un account di accesso o a un gruppo di Windows solo 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 il mapping di un utente a un account di accesso diverso. Non è possibile modificare con questa clausola il mapping degli utenti che non hanno un account di accesso o degli utenti con mapping a un certificato o a una chiave asimmetrica. È possibile modificare il mapping solo di utenti di SQL e di utenti (o gruppi) di Windows. La clausola WITH LOGIN
non può essere usata per modificare il tipo di utente, ad esempio la modifica di un account di Windows in un account di accesso di SQL Server. L'unica eccezione è quando si modifica un utente di Windows in un utente di Microsoft Entra.
Nota
Le regole seguenti non si applicano agli utenti di Windows in Istanza gestita di SQL di Azure perché non è supportata la creazione di account di accesso di Windows in Istanza gestita di SQL di Azure. L'opzione WITH LOGIN può essere usata solo se sono presenti account di accesso di Microsoft Entra.
Se vengono soddisfatte le seguenti condizioni, il nome dell'utente viene automaticamente modificando nel nome dell'account di accesso.
L'utente è un utente di Windows.
Il nome è un nome di Windows (contiene una barra rovesciata).
Non è stato specificato alcun nome.
Il nome corrente è diverso dal nome dell'account di accesso.
In caso contrario, l'utente non verrà rinominato a meno che il chiamante non richiami anche la clausola NAME
.
Il nome di un utente mappato a un account di accesso di SQL Server, a un certificato o a una chiave asimmetrica non può contenere il carattere barra rovesciata (\
).
Attenzione
A partire da SQL Server 2005, il funzionamento degli schemi è stato modificato. È pertanto possibile che il codice in cui gli schemi vengono considerati 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 DDL 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 tali database è invece necessario usare le nuove viste del catalogo. Le nuove viste del catalogo prendono in considerazione la separazione tra entità e schemi introdotta in SQL Server 2005. Per altre informazioni sulle viste del catalogo, vedere Viste del catalogo (Transact-SQL).
Osservazioni per gli utenti di Windows in SQL locale di cui è stata eseguita la migrazione a Istanza gestita di SQL di Azure
Queste osservazioni si applicano all'autenticazione come utenti di Windows federati e sincronizzati con Microsoft Entra ID.
- La convalida di utenti o gruppi di Windows di cui è stato eseguito il mapping a Microsoft Entra ID viene eseguita per impostazione predefinita tramite l'API Graph in tutte le versioni della sintassi ALTER USER usata a scopo di migrazione.
- Gli utenti locali con alias (usare un nome diverso dall'account di Windows originale) manterranno il nome con alias.
- Per l'autenticazione di Microsoft Entra, il parametro LOGIN si applica solo a Istanza gestita di SQL di Azure e non può essere usato con database SQL.
- Per visualizzare gli account di accesso per le entità di sicurezza di Microsoft Entra, usare il comando seguente:
SELECT * FROM sys.server_principals;
. - Controllare che il tipo indicato dell'account di accesso sia
E
oX
. - L'opzione PASSWORD non può essere usata per gli utenti di Microsoft Entra.
- In tutti i casi di migrazione, i ruoli e le autorizzazioni di utenti o gruppi di Windows verranno trasferiti automaticamente ai nuovi utenti o gruppi di Microsoft Entra.
-
FROM EXTERNAL PROVIDER
consiste nel modificare utenti e gruppi di Windows da SQL locale a utenti e gruppi di Microsoft Entra. Il dominio windows deve essere federato con l'ID Microsoft Entra e tutti i membri del dominio Windows devono esistere in Microsoft Entra ID quando si usa questa estensione. La sintassiFROM EXTERNAL PROVIDER
si applica all'istanza gestita di SQL di Azure e deve essere usata nel caso in cui gli utenti di Windows non dispongano di account di accesso nell'istanza SQL originale e debbano essere mappati agli utenti del database Microsoft Entra autonomi. - In questo caso, il
user_name
consentito può essere: - Un utente di Windows (
domain\user
). - Gruppo di Windows (
MyWindowsGroup
). - Alias di Windows (
MyWindowsAlias
). - Il risultato del comando ALTER sostituisce il vecchio
user_name
con il nome corrispondente trovato in Microsoft Entra ID basato sul SID originale del vecchiouser_name
. Il nome modificato viene sostituito e archiviato nei metadati del database: - (
domain\user
) verrà sostituito con Microsoft Entrauser@domain.com
. - (
domain\MyWindowsGroup
) verrà sostituito con il gruppo Microsoft Entra. - (
MyWindowsAlias
) rimarrà invariato, ma il SID di questo utente verrà archiviato in Microsoft Entra ID.
Nota
Se il SID dell'utente originale convertito in object_ID
non è possibile trovare nel tenant microsoft Entra ID, il comando ALTER USER
avrà esito negativo.
- Per visualizzare gli utenti modificati, usare il comando seguente:
SELECT * FROM sys.database_principals;
- Controllare che il tipo indicato dell'utente sia
E
oX
. - Quando si usa NAME per eseguire la migrazione degli utenti di Windows agli utenti di Microsoft Entra, si applicano le restrizioni seguenti:
- È necessario specificare un valore LOGIN valido.
- Il nome verrà archiviato nel tenant microsoft Entra ID e può essere solo:
- Il nome di LOGIN.
- Alias: il nome non può esistere in Microsoft Entra ID.
- In tutti gli altri casi, la sintassi ha esito negativo.
Sicurezza
Nota
Un utente con autorizzazione ALTER ANY USER può 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.
Autorizzazioni
Per modificare il nome di un utente, è necessaria l'autorizzazione ALTER ANY USER.
Per modificare l'account di accesso di destinazione di un utente, è necessaria l'autorizzazione CONTROL per il database.
Per modificare il nome di un utente con autorizzazione CONTROL per il database, è necessaria l'autorizzazione CONTROL per il database.
Per modificare la lingua o lo schema predefinito, è necessaria l'autorizzazione ALTER per l'utente. Gli utenti possono modificare il proprio schema predefinito o la lingua.
Esempi
Tutti gli esempi vengono eseguiti in un database utente.
R. Modificare il nome di un utente del database
Nell'esempio seguente il nome dell'utente del database Mary5
viene modificato in Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Modificare lo schema predefinito di un utente
Nell'esempio seguente lo schema predefinito dell'utente Mary51
viene modificato in Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. Modificare più opzioni contemporaneamente
Nell'esempio seguente vengono modificate diverse opzioni per un utente del database indipendente in un'istruzione. Sostituire <new strong password here>
e <old strong password here>
con valori personalizzati.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>'
, DEFAULT_LANGUAGE= French ;
GO
D. Eseguire il mapping dell'utente nel database a un account di accesso di Microsoft Entra dopo la migrazione
Nell'esempio seguente viene ricreato il mapping dell'utente a westus/joe
un utente di Microsoft Entra, joe@westus.com
. Questo esempio riguarda gli account di accesso che esistono già nell'istanza gestita. Questa operazione deve essere eseguita dopo aver completato una migrazione del database a Istanza gestita di SQL di Azure e si vuole usare l'account di accesso di Microsoft Entra per l'autenticazione.
ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com]
E. Eseguire il mapping di un utente di Windows precedente nel database senza un account di accesso in Istanza gestita di SQL di Azure a un utente di Microsoft Entra
Nell'esempio seguente viene eseguito il mapping dell'utente, westus/joe
senza un account di accesso, a un utente di Microsoft Entra, joe@westus.com
. L'utente federato deve esistere in Microsoft Entra ID.
ALTER USER [westus/joe] FROM EXTERNAL PROVIDER
F. Eseguire il mapping dell'alias utente a un account di accesso esistente di Microsoft Entra
L'esempio seguente riesegue il mapping del nome utente westus\joe
a joe_alias
. L'account di accesso Microsoft Entra corrispondente in questo caso è joe@westus.com
.
ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com], name= joe_alias
G. Eseguire il mapping di un gruppo di Windows migrato in Istanza gestita di SQL di Azure a un gruppo Microsoft Entra
Nell'esempio seguente viene eseguito il mapping del gruppo locale precedente a westus\mygroup
un gruppo mygroup
Microsoft Entra nell'istanza gestita. Il gruppo deve esistere in Microsoft Entra ID.
ALTER USER [westus\mygroup] WITH LOGIN = mygroup;
Contenuto correlato
* Azure Synapse
Analytics *
Azure Synapse Analytics
Sintassi
-- Syntax for Azure Synapse
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| LOGIN = login_name
| DEFAULT_SCHEMA = schema_name
[;]
Argomenti
user_name
Specifica il nome con cui viene identificato l'utente all'interno del database.
LOGIN = login_name
Modifica il mapping di un utente associandolo a un altro account di accesso, modificando l'ID di sicurezza (SID) dell'utente in modo che corrisponda all'ID di sicurezza dell'account di accesso.
Se l'istruzione ALTER USER è l'unica istruzione in un batch SQL, il database SQL di Azure supporta la clausola WITH LOGIN
. Se l'istruzione ALTER USER non è l'unica istruzione in un batch SQL o viene eseguita in SQL dinamico, la clausola WITH LOGIN
non è supportata.
NAME = new_user_name
Specifica il nuovo nome dell'utente. new_user_name non deve esistere già nel database corrente.
DEFAULT_SCHEMA = { schema_name | NULL }
Specifica il primo schema nel quale il server eseguirà una ricerca durante la risoluzione dei nomi di oggetti per l'utente. L'impostazione dello schema predefinito su NULL comporta la rimozione di uno schema predefinito da un gruppo di Windows. L'opzione NULL non può essere usata con un utente di Windows.
Osservazioni:
Lo schema predefinito sarà il primo schema in cui verrà eseguita la ricerca nel server durante la risoluzione dei nomi di oggetti per l'utente del database. Se non specificato diversamente, lo schema predefinito sarà il proprietario degli oggetti creati dall'utente del database.
Se l'utente ha uno schema predefinito, viene usato lo schema predefinito. Se l'utente non ha uno schema predefinito ma è membro di un gruppo che ha uno schema predefinito, verrà usato lo schema predefinito del gruppo. Se l'utente non ha uno schema predefinito ed è membro di più di un gruppo, lo schema predefinito per l'utente sarà quello del gruppo di Windows con il valore principal_id più basso e uno schema predefinito impostato in modo esplicito. Se non è possibile determinare uno schema predefinito per un utente, viene usato lo schema dbo
.
DEFAULT_SCHEMA può essere impostato su uno schema che attualmente non è presente nel database. È pertanto possibile assegnare uno schema predefinito tramite DEFAULT_SCHEMA a un utente prima della creazione dello schema.
Non è possibile specificare DEFAULT_SCHEMA per un utente di cui è stato eseguito il mapping a un certificato o a 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
.
La clausola WITH LOGIN
consente il mapping di un utente a un account di accesso diverso. Non è possibile modificare con questa clausola il mapping degli utenti che non hanno un account di accesso o degli utenti con mapping a un certificato o a una chiave asimmetrica. È possibile modificare il mapping solo di utenti di SQL e di utenti (o gruppi) di Windows. La clausola WITH LOGIN
non può essere usata per modificare il tipo di utente, ad esempio la modifica di un account di Windows in un account di accesso di SQL Server.
Se vengono soddisfatte le seguenti condizioni, il nome dell'utente viene automaticamente modificando nel nome dell'account di accesso.
Non è stato specificato alcun nome.
Il nome corrente è diverso dal nome dell'account di accesso.
In caso contrario, l'utente non verrà rinominato a meno che il chiamante non richiami anche la clausola NAME
.
Il nome di un utente mappato a un account di accesso di SQL Server, a un certificato o a una chiave asimmetrica non può contenere il carattere barra rovesciata (\
).
Attenzione
A partire da SQL Server 2005, il funzionamento degli schemi è stato modificato. È pertanto possibile che il codice in cui gli schemi vengono considerati 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 DDL 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 tali database è invece necessario usare le nuove viste del catalogo. Le nuove viste del catalogo prendono in considerazione la separazione tra entità e schemi introdotta in SQL Server 2005. Per altre informazioni sulle viste del catalogo, vedere Viste del catalogo (Transact-SQL).
Sicurezza
Nota
Un utente con autorizzazione ALTER ANY USER può 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.
Autorizzazioni
Per modificare il nome di un utente, è necessaria l'autorizzazione ALTER ANY USER.
Per modificare l'account di accesso di destinazione di un utente, è necessaria l'autorizzazione CONTROL per il database.
Per modificare il nome di un utente con autorizzazione CONTROL per il database, è necessaria l'autorizzazione CONTROL per il database.
Per modificare la lingua o lo schema predefinito, è necessaria l'autorizzazione ALTER per l'utente. Gli utenti possono modificare il proprio schema predefinito o la lingua.
Esempi
Tutti gli esempi vengono eseguiti in un database utente.
R. Modificare il nome di un utente del database
Nell'esempio seguente il nome dell'utente del database Mary5
viene modificato in Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Modificare lo schema predefinito di un utente
Nell'esempio seguente lo schema predefinito dell'utente Mary51
viene modificato in Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
Contenuto correlato
* Piattaforma di strumenti
analitici (PDW) *
Sistema della piattaforma di analisi
Sintassi
-- Syntax for Analytics Platform System
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| LOGIN = login_name
| DEFAULT_SCHEMA = schema_name
[;]
Argomenti
user_name
Specifica il nome con cui viene identificato l'utente all'interno del database.
LOGIN = login_name
Modifica il mapping di un utente associandolo a un altro account di accesso, modificando l'ID di sicurezza (SID) dell'utente in modo che corrisponda all'ID di sicurezza dell'account di accesso.
Se l'istruzione ALTER USER è l'unica istruzione in un batch SQL, il database SQL di Azure supporta la clausola WITH LOGIN
. Se l'istruzione ALTER USER non è l'unica istruzione in un batch SQL o viene eseguita in SQL dinamico, la clausola WITH LOGIN
non è supportata.
NAME = new_user_name
Specifica il nuovo nome dell'utente. new_user_name non deve esistere già nel database corrente.
DEFAULT_SCHEMA = { schema_name | NULL }
Specifica il primo schema nel quale il server eseguirà una ricerca durante la risoluzione dei nomi di oggetti per l'utente. L'impostazione dello schema predefinito su NULL comporta la rimozione di uno schema predefinito da un gruppo di Windows. L'opzione NULL non può essere usata con un utente di Windows.
Osservazioni:
Lo schema predefinito sarà il primo schema in cui verrà eseguita la ricerca nel server durante la risoluzione dei nomi di oggetti per l'utente del database. Se non specificato diversamente, lo schema predefinito sarà il proprietario degli oggetti creati dall'utente del database.
Se l'utente ha uno schema predefinito, viene usato lo schema predefinito. Se l'utente non ha uno schema predefinito ma è membro di un gruppo che ha uno schema predefinito, verrà usato lo schema predefinito del gruppo. Se l'utente non ha uno schema predefinito ed è membro di più di un gruppo, lo schema predefinito per l'utente sarà quello del gruppo di Windows con il valore principal_id più basso e uno schema predefinito impostato in modo esplicito. Se non è possibile determinare uno schema predefinito per un utente, viene usato lo schema dbo
.
DEFAULT_SCHEMA può essere impostato su uno schema che attualmente non è presente nel database. È pertanto possibile assegnare uno schema predefinito tramite DEFAULT_SCHEMA a un utente prima della creazione dello schema.
Non è possibile specificare DEFAULT_SCHEMA per un utente di cui è stato eseguito il mapping a un certificato o a 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
.
La clausola WITH LOGIN
consente il mapping di un utente a un account di accesso diverso. Non è possibile modificare con questa clausola il mapping degli utenti che non hanno un account di accesso o degli utenti con mapping a un certificato o a una chiave asimmetrica. È possibile modificare il mapping solo di utenti di SQL e di utenti (o gruppi) di Windows. La clausola WITH LOGIN
non può essere usata per modificare il tipo di utente, ad esempio la modifica di un account di Windows in un account di accesso di SQL Server.
Se vengono soddisfatte le seguenti condizioni, il nome dell'utente viene automaticamente modificando nel nome dell'account di accesso.
Non è stato specificato alcun nome.
Il nome corrente è diverso dal nome dell'account di accesso.
In caso contrario, l'utente non verrà rinominato a meno che il chiamante non richiami anche la clausola NAME
.
Il nome di un utente mappato a un account di accesso di SQL Server, a un certificato o a una chiave asimmetrica non può contenere il carattere barra rovesciata (\
).
Attenzione
A partire da SQL Server 2005, il funzionamento degli schemi è stato modificato. È pertanto possibile che il codice in cui gli schemi vengono considerati 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 DDL 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 tali database è invece necessario usare le nuove viste del catalogo. Le nuove viste del catalogo prendono in considerazione la separazione tra entità e schemi introdotta in SQL Server 2005. Per altre informazioni sulle viste del catalogo, vedere Viste del catalogo (Transact-SQL).
Sicurezza
Nota
Un utente con autorizzazione ALTER ANY USER può 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.
Autorizzazioni
Per modificare il nome di un utente, è necessaria l'autorizzazione ALTER ANY USER.
Per modificare l'account di accesso di destinazione di un utente, è necessaria l'autorizzazione CONTROL per il database.
Per modificare il nome di un utente con autorizzazione CONTROL per il database, è necessaria l'autorizzazione CONTROL per il database.
Per modificare la lingua o lo schema predefinito, è necessaria l'autorizzazione ALTER per l'utente. Gli utenti possono modificare il proprio schema predefinito o la lingua.
Esempi
Tutti gli esempi vengono eseguiti in un database utente.
R. Modificare il nome di un utente del database
Nell'esempio seguente il nome dell'utente del database Mary5
viene modificato in Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Modificare lo schema predefinito di un utente
Nell'esempio seguente lo schema predefinito dell'utente Mary51
viene modificato in Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO