ALTER USER (Transact-SQL)

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

Icona collegamento argomentoConvenzioni relative alla sintassi Transact-SQL

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 userName
 WITH <set_item> [ ,...n ]
[;]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

Argomenti

userName specifica il nome con cui viene identificato l'utente all'interno del database.

LOGIN =loginName 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 =newUserName specifica il nuovo nome dell'utente. newUserName non deve essere già presente nel database corrente.

DEFAULT_SCHEMA = { schemaName | 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.

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.

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> | <language name> | <language alias> }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 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

È possibile specificare questa opzione solo in un database indipendente e solo per utenti contenuti.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] Si applica a: SQL Server 2016 (13.x) e versioni successive, Database SQL.

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 Migrare dati sensibili protetti da 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 possono essere determinati schemi predefiniti 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 di modificare il mapping di un utente associandolo 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. Non è possibile usare la clausola WITH LOGIN per modificare il tipo di utente, ad esempio per modificare un account di Windows in un account di accesso 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. Per risolvere questa situazione, è possibile usare la clausola WITH LOGIN sostituendo il SID utente nel database con il SID di accesso del 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 di cui è stato eseguito il mapping a un account di accesso SQL Server, un certificato o 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 ulteriori 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. Modifica del 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. Modifica dello 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. Modifica contemporanea di diverse opzioni

Nell'esempio seguente vengono modificate diverse opzioni per un utente del database indipendente in un'istruzione.

Si applica a: SQL Server 2012 (11.x) e versioni successive.

ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per'
, 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

Vedi anche

* Database SQL *

 

Database SQL

Sintassi

-- Syntax for Azure SQL Database

ALTER USER userName
 WITH <set_item> [ ,...n ]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = schemaName
| LOGIN = loginName
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
[;]

-- Azure SQL Database Update Syntax
ALTER USER userName
 WITH <set_item> [ ,...n ]
[;]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

-- SQL Database syntax when connected to a federation member
ALTER USER userName
 WITH <set_item> [ ,... n ]
[;]

<set_item> ::=
 NAME = newUserName

Argomenti

userName specifica il nome con cui viene identificato l'utente all'interno del database.

LOGIN =loginName 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 =newUserName specifica il nuovo nome dell'utente. newUserName non deve essere già presente nel database corrente.

DEFAULT_SCHEMA = { schemaName | 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' Si applica a: SQL Server 2012 (11.x) e versioni successive, Database SQL.

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.

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.

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 Migrare dati sensibili protetti da 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 dispone di uno schema predefinito, verrà utilizzato tale schema. 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 possono essere determinati schemi predefiniti 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 di modificare il mapping di un utente associandolo 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. Non è possibile usare la clausola WITH LOGIN per modificare il tipo di utente, ad esempio per modificare un account di Windows in un account di accesso SQL 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 di cui è stato eseguito il mapping a un account di accesso SQL Server, un certificato o 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 ulteriori 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. Modifica del 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. Modifica dello 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. Modifica contemporanea di diverse opzioni

Nell'esempio seguente vengono modificate diverse opzioni per un utente del database indipendente in un'istruzione.

ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per';
GO

Vedere anche

* Istanza gestita di SQL *

 

Istanza gestita di SQL di Azure

Sintassi

Importante

Per Istanza gestita di SQL di Azure, sono supportate solo le opzioni che seguono, quando si applicano ad utenti con account di accesso di Azure AD: DEFAULT_SCHEMA = { schemaName | NULL } e DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }

È disponibile una nuova estensione di sintassi, aggiunta per consentire di eseguire nuovamente il mapping degli utenti in un database migrato in 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 Azure AD ad account di accesso Azure AD.

-- Syntax for SQL Managed Instance
ALTER USER userName
 { WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| 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 userName
 { WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]

<set_item> ::=
 NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }

Argomenti

userName specifica il nome con cui viene identificato l'utente all'interno del database.

LOGIN =loginName 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 =newUserName specifica il nuovo nome dell'utente. newUserName non deve essere già presente nel database corrente.

DEFAULT_SCHEMA = { schemaName | 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> | <language name> | <language alias> }

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

È possibile specificare questa opzione solo in un database indipendente e solo per utenti contenuti.

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 Migrare dati sensibili protetti da 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 dispone di uno schema predefinito, verrà utilizzato tale schema. 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 possono essere determinati schemi predefiniti 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 di modificare il mapping di un utente associandolo 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. Non è possibile usare la clausola WITH LOGIN per modificare il tipo di utente, ad esempio per modificare un account di Windows in un account di accesso SQL server. L'unica eccezione si verifica quando si modifica un utente di Windows in un utente di Azure AD.

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. È possibile usare l'opzione WITH LOGIN solo se sono presenti account di accesso Azure AD.

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 di cui è stato eseguito il mapping a un account di accesso SQL Server, un certificato o 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 ulteriori 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 note si applicano all'autenticazione come utenti di Windows che sono stati federati e sincronizzati con Azure AD.

Nota

L'amministratore di Azure AD per la funzionalità Istanza gestita di SQL di Azure dopo la creazione è stato modificato. Per altre informazioni, vedere Nuove funzionalità di amministrazione di Azure AD per l'istanza gestita.

  • La convalida degli utenti o dei gruppi di Windows di cui è stato eseguito il mapping ad Azure AD viene eseguita per impostazione predefinita tramite API Graph in tutte le versioni della sintassi ALTER USER usata per la migrazione.
  • Gli utenti locali con alias (usare un nome diverso dall'account di Windows originale) manterranno il nome con alias.
  • Per l'autenticazione di Azure AD, il parametro LOGIN si applica solo a Istanza gestita di SQL di Azure e non può essere usato con il database SQL.
  • Per visualizzare gli account di accesso per le entità di sicurezza di Azure AD, usare il comando seguente: select * from sys.server_principals.
  • Controllare che il tipo indicato dell'account di accesso sia E o X.
  • Non è possibile usare l'opzione PASSWORD per gli utenti di Azure AD.
  • In tutti i casi di migrazione, i ruoli e le autorizzazioni degli utenti o dei gruppi di Windows verranno trasferiti automaticamente nei nuovi utenti o gruppi di Azure AD.
  • È disponibile una nuova estensione della sintassi, FROM EXTERNAL PROVIDER, per la modifica di utenti e gruppi di Windows da SQL locale a utenti e gruppi di Azure AD. Il dominio Windows deve essere federato con Azure AD e tutti i membri del dominio Windows devono esistere in Azure AD quando si usa questa estensione. La sintassi FROM EXTERNAL PROVIDER si applica a Istanza gestita di SQL di Azure e deve essere usata nel caso in cui gli utenti di Windows non abbiano account di accesso nell'istanza di SQL originale e sia necessario eseguirne il mapping a utenti di database Azure AD autonomi.
  • In questo caso il valore userName consentito può essere:
  • Un utente di Windows (domain\user).
  • Un gruppo di Windows (MyWindowsGroup).
  • Un alias di Windows (MyWindowsAlias).
  • Il risultato del comando ALTER sostituisce il valore userName precedente con il nome corrispondente trovato in Azure AD in base all'ID di sicurezza (SID) originale del valore userName precedente. Il nome modificato viene sostituito e archiviato nei metadati del database:
  • (domain\user) verrà sostituito con user@domain.com di Azure AD.
  • (domain\MyWidnowsGroup) verrà sostituito con il gruppo di Azure AD.
  • (MyWindowsAlias) rimarrà invariato, ma l'ID di sicurezza (SID) di questo utente verrà verificato in Azure AD.

Nota

Se l'ID di sicurezza (SID) dell'utente originale convertito in objectID non viene trovato in Azure AD, 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 o X.
  • Quando NAME viene usato per eseguire la migrazione degli utenti di Windows a utenti di Azure AD, si applicano le restrizioni seguenti:
  • È necessario specificare un valore LOGIN valido.
  • NAME viene verificato in Azure AD e può essere solo:
  • Il nome di LOGIN.
  • Un alias (il nome non può esistere in Azure AD).
  • In tutti gli altri casi la sintassi causerà un errore.

Security

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. Modifica del 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. Modifica dello 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. Modifica contemporanea di diverse opzioni

Nell'esempio seguente vengono modificate diverse opzioni per un utente del database indipendente in un'istruzione.

ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per'
, DEFAULT_LANGUAGE= French ;
GO

D. Eseguire il mapping dell'utente nel database a un account di accesso Azure AD dopo la migrazione

L'esempio seguente riesegue il mapping dell'utente westus/joe a un utente di Azure AD joe@westus.com. Questo esempio riguarda gli account di accesso che esistono già nell'istanza gestita. Questa operazione deve essere eseguita dopo aver completato la migrazione di un database a Istanza gestita di SQL di Azure e quando si vuole usare l'account di accesso di Azure AD 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 Azure AD

L'esempio seguente riesegue il mapping dell'utente westus/joe senza un account di accesso a un utente di Azure AD joe@westus.com. L'utente federato deve esistere in Azure AD.

ALTER USER [westus/joe] FROM EXTERNAL PROVIDER

F. Eseguire il mapping dell'alias utente a un account di accesso Azure AD esistente

L'esempio seguente riesegue il mapping del nome utente westus\joe a joe_alias. In questo caso l'account di accesso Azure AD corrispondente è joe@westus.com.

ALTER USER [westus/joe] WITH LOGIN = joe@westus.com, name= joe_alias

G. Eseguire il mapping di un gruppo di Windows di cui è stata eseguita la migrazione in Istanza gestita di SQL di Azure a un gruppo di Azure AD

L'esempio seguente riesegue il mapping del gruppo locale precedente westus\mygroup a un gruppo di Azure AD mygroup nell'istanza gestita. Il gruppo deve esistere in Azure AD.

ALTER USER [westus\mygroup] WITH LOGIN = mygroup

Vedere anche

* Azure Synapse
Analytics *

 

Azure Synapse Analytics

Sintassi

-- Syntax for Azure Synapse

ALTER USER userName
 WITH <set_item> [ ,...n ]

<set_item> ::=
 NAME = newUserName
 | LOGIN = loginName
 | DEFAULT_SCHEMA = schema_name
[;]

Argomenti

userName specifica il nome con cui viene identificato l'utente all'interno del database.

LOGIN =loginName 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 =newUserName specifica il nuovo nome dell'utente. newUserName non deve essere già presente nel database corrente.

DEFAULT_SCHEMA = { schemaName | 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 dispone di uno schema predefinito, verrà utilizzato tale schema. 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 possono essere determinati schemi predefiniti 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 di modificare il mapping di un utente associandolo 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. Non è possibile usare la clausola WITH LOGIN per modificare il tipo di utente, ad esempio per modificare un account di Windows in un account di accesso 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 di cui è stato eseguito il mapping a un account di accesso SQL Server, un certificato o 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 ulteriori 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. Modifica del 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. Modifica dello 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

Vedere anche

* Piattaforma di strumenti
analitici (PDW) *

 

Sistema della piattaforma di analisi

Sintassi

-- Syntax for Analytics Platform System

ALTER USER userName
 WITH <set_item> [ ,...n ]

<set_item> ::=
 NAME = newUserName
 | LOGIN = loginName
 | DEFAULT_SCHEMA = schema_name
[;]

Argomenti

userName specifica il nome con cui viene identificato l'utente all'interno del database.

LOGIN =loginName 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 =newUserName specifica il nuovo nome dell'utente. newUserName non deve essere già presente nel database corrente.

DEFAULT_SCHEMA = { schemaName | 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 dispone di uno schema predefinito, verrà utilizzato tale schema. 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 possono essere determinati schemi predefiniti 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 di modificare il mapping di un utente associandolo 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. Non è possibile usare la clausola WITH LOGIN per modificare il tipo di utente, ad esempio per modificare un account di Windows in un account di accesso 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 di cui è stato eseguito il mapping a un account di accesso SQL Server, un certificato o 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 ulteriori 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. Modifica del 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. Modifica dello 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

Vedere anche