CREATE USER (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Aggiunge un utente al database corrente. Sotto sono elencati i 13 tipi di utenti con un esempio della sintassi di base:

Nota

Anche se Microsoft Entra ID è il nuovo nome per Azure Active Directory (Azure AD), per evitare l'interruzione degli ambienti esistenti, la denominazione Azure AD è tuttora mantenuta in alcuni elementi hardcoded, ad esempio campi dell'interfaccia utente, provider di connessioni, codici errore e cmdlet. All’interno di questo articolo i due nomi vengono utilizzati in modo intercambiabile.

Utenti basati su account di accesso nel database master: tipo di utente più comune.

  • Utente basato su un account di accesso basato su un account Active Directory. CREATE USER [Contoso\Fritz];
  • Utente basato su un account di accesso basato su un gruppo di Windows. CREATE USER [Contoso\Sales];
  • Utente basato su accesso tramite l'autenticazione di SQL Server. CREATE USER Mary;
  • Utente basato su un account di accesso di Microsoft Entra. CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]

    Nota

    Le entità server (account di accesso) di Microsoft Entra sono attualmente in anteprima pubblica per database SQL di Azure.

Utenti che effettuano l'autenticazione a livello di database: consigliato per rendere più portatile il database.
Sempre consentiti in database SQL. Consentiti solo in un database indipendente in SQL Server.

  • Utente basato su un utente di Windows che non dispone di account di accesso. CREATE USER [Contoso\Fritz];

  • Utente basato su un gruppo di Windows che non dispone di account di accesso. CREATE USER [Contoso\Sales];

  • Utente in database SQL o Azure Synapse Analytics basato su un utente di Microsoft Entra. CREATE USER [Fritz@contoso.com] FROM EXTERNAL PROVIDER;

  • Utente del database indipendente con password. (Non disponibile in Azure Synapse Analytics.) CREATE USER Mary WITH PASSWORD = '********';

Utenti basati sulle entità di sicurezza di Windows che si connettono tramite account di accesso del gruppo di Windows

  • Utente basato su un utente di Windows che non dispone di accesso, ma che può connettersi al motore di database tramite l'appartenenza a un gruppo di Windows. CREATE USER [Contoso\Fritz];

  • Utente basato su un gruppo di Windows che non dispone di accesso, ma che può connettersi al motore di database tramite l'appartenenza a un gruppo di Windows diverso. CREATE USER [Contoso\Fritz];

Utenti che non possono eseguire l'autenticazione: questi utenti non possono accedere a SQL Server o database SQL.

  • Utente che non dispone di account di accesso. Non è possibile accedere ma è possibile concedere le autorizzazioni. CREATE USER CustomApp WITHOUT LOGIN;
  • Utente basato su un certificato. Non è possibile accedere ma è possibile concedere le autorizzazioni e firmare i moduli. CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
  • Utente basato su una chiave asimmetrica. Non è possibile accedere ma è possibile concedere le autorizzazioni e firmare i moduli. CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;

Convenzioni relative alla sintassi Transact-SQL

Sintassi

-- Syntax for SQL Server, Azure SQL Database, and Azure SQL Managed Instance
  
-- Syntax Users based on logins in master  
CREATE USER user_name   
    [   
        { FOR | FROM } LOGIN login_name   
    ]  
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  
  
-- Users that authenticate at the database  
CREATE USER   
    {  
      windows_principal [ WITH <options_list> [ ,... ] ]  
  
    | user_name WITH PASSWORD = 'password' [ , <options_list> [ ,... ]   
    | Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    }  
  
 [ ; ]  
  
-- Users based on Windows principals that connect through Windows group logins  
CREATE USER   
    {   
          windows_principal [ { FOR | FROM } LOGIN windows_principal ]  
        | user_name { FOR | FROM } LOGIN windows_principal  
}  
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  
  
-- Users that cannot authenticate   
CREATE USER user_name   
    {  
         WITHOUT LOGIN [ WITH <limited_options_list> [ ,... ] ]  
       | { FOR | FROM } CERTIFICATE cert_name   
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name   
    }  
 [ ; ]  
  
<options_list> ::=  
      DEFAULT_SCHEMA = schema_name  
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }  
    | SID = sid   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]  
  
<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name ]   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]  
  
-- SQL Database syntax when connected to a federation member  
CREATE USER user_name  
[;]

-- Syntax for users based on Microsoft Entra logins for Azure SQL Managed Instance
CREATE USER user_name   
    [   { FOR | FROM } LOGIN login_name  ]  
    | FROM EXTERNAL PROVIDER
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  

<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name 
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ] 
-- Syntax for Azure Synapse Analytics  
  
CREATE USER user_name   
    [ { { FOR | FROM } { LOGIN login_name }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]

CREATE USER Microsoft_Entra_principal FROM EXTERNAL PROVIDER  
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]
-- Syntax for Parallel Data Warehouse  
  
CREATE USER user_name   
    [ { { FOR | FROM }  
      {   
        LOGIN login_name   
      }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]  

Argomenti

user_name

Specifica il nome con cui viene identificato l'utente all'interno del database. user_name è un sysname. Non può superare la lunghezza di 128 caratteri. Quando si crea un utente basato su un'entità di Windows, il nome dell'entità di Windows diventa il nome utente, a meno che non ne sia stato specificato un altro.

LOGIN login_name

Specifica l'account di accesso per cui viene creato l'utente del database. login_name deve essere un account di accesso valido nel server. Può essere un account di accesso basato su un'entità di windows (utente o gruppo), un account di accesso tramite l'autenticazione di SQL Server o un account di accesso tramite un'entità Di sicurezza Microsoft Entra (utente, gruppo o applicazione). Quando si accede al database tramite questo account di accesso di SQL Server, si acquisisce il nome e l'ID dell'utente del database che si sta creando. Quando si crea un accesso con mapping da un'entità di sicurezza di Windows, usare il formato [<domainName>\<loginName>]. Per alcuni esempi, vedere Riepilogo della sintassi.

Se l'istruzione CREATE USER è l'unica istruzione in un batch SQL, il database SQL di Azure supporta la clausola WITH LOGIN. Se l'istruzione CREATE USER non è l'unica istruzione in un batch di SQL o viene eseguita in SQL dinamico, la clausola WITH LOGIN non è supportata.

WITH DEFAULT_SCHEMA = schema_name

Specifica il primo schema in cui verrà eseguita una ricerca nel server durante la risoluzione dei nomi di oggetti per l'utente del database.

'windows_principal'

Specifica l'entità di Windows per la quale viene creato l'utente del database. The windows_principal può essere un utente o un gruppo di Windows. L'utente verrà creato anche se windows_principal non ha un accesso. Quando si effettua la connessione a SQL Server, se windows_principal non ha un accesso, l'entità di sicurezza di Windows deve eseguire l'autenticazione al motore di database tramite l'appartenenza a un gruppo di Windows che abbia un accesso. In alternativa, la stringa di connessione deve specificare il database indipendente come catalogo iniziale. Quando si crea un utente da un'entità di sicurezza di Windows, usare il formato [<domainName>\<loginName>]. Per alcuni esempi, vedere Riepilogo della sintassi. I nomi degli utenti basati su utenti di Active Directory devono avere un numero di caratteri inferiore a 21.

'Microsoft_Entra_principal'

Si applica a: database SQL, Istanza gestita di SQL, Azure Synapse Analytics.

Specifica l'entità di sicurezza Microsoft Entra per cui viene creato l'utente del database. Il Microsoft_Entra_principal può essere un utente di Microsoft Entra, un gruppo Microsoft Entra o un'applicazione Microsoft Entra. Gli utenti di Microsoft Entra non possono avere account di accesso con autenticazione di Windows in database SQL; solo gli utenti del database. Il stringa di connessione deve specificare il database indipendente come catalogo iniziale.

Per le entità di sicurezza Microsoft Entra, la sintassi CREATE USER richiede:

  • UserPrincipalName dell'oggetto Microsoft Entra per Microsoft Entra Users.

    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
  • Microsoft Entra server principals (account di accesso) introduce la creazione di utenti di cui viene eseguito il mapping agli account di accesso microsoft Entra nel database master virtuale. CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]

  • Gli utenti di Microsoft Entra e le entità servizio (applicazioni) membri di più di 2048 gruppi di sicurezza di Microsoft Entra non sono supportati per accedere ai database in database SQL di Azure, Istanza gestita di SQL di Azure o Azure Synapse.

  • DisplayName dell'oggetto Microsoft Entra per i gruppi di Microsoft Entra e Microsoft Entra Applications. Nel caso del gruppo di sicurezza Nurses si userebbe:

    • CREATE USER [Nurses] FROM EXTERNAL PROVIDER;

Per altre informazioni, vedere Connessione al database SQL con l'autenticazione di Microsoft Entra.

WITH PASSWORD = 'password'

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

Può essere usato solo in un database indipendente. Specifica la password per l'utente che viene creato. A partire da SQL Server 2012 (11.x), le informazioni relative alle password archiviate vengono calcolate usando l'algoritmo SHA-512 della password con salting.

WITHOUT LOGIN

Specifica che sull'utente non deve essere eseguito il mapping a un accesso esistente.

CERTIFICATE cert_name

Si applica a: SQL Server 2008 (10.0.x) e versioni successive, database SQL.

Specifica il certificato per cui viene creato l'utente del database.

ASYMMETRIC KEY asym_key_name

Si applica a: SQL Server 2008 (10.0.x) e versioni successive, database SQL.

Specifica la chiave asimmetrica per cui viene creato l'utente del database.

DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language salias> }

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

Specifica la lingua predefinita per il nuovo utente. Se per l'utente viene specificata una lingua predefinita e la lingua predefinita del database viene modificata in seguito, la lingua predefinita dell'utente rimane quella specificata. Se non viene specificata alcuna lingua predefinita, la lingua predefinita dell'utente sarà la lingua predefinita del database. Se per l'utente non viene specificata la lingua predefinita e la lingua predefinita del database viene modificata in seguito, la lingua predefinita dell'utente sarà la nuova lingua predefinita del database.

Importante

DEFAULT_LANGUAGE viene usato unicamente per gli utenti di database indipendenti.

SID = sid

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

Si applica solo agli utenti con password (autenticazione di SQL Server) in un database indipendente. Specifica il SID del nuovo utente del database. Se questa opzione non viene selezionata, SQL Server assegna un SID automaticamente. Usare il parametro SID per creare utenti in più database con la stessa identità (SID). Ciò risulta utile per la creazione di utenti in più database per preparare il failover Always On. Per determinare il SID di un utente, eseguire una query su sys.database_principals.

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.

FROM EXTERNAL PROVIDER

Si applica a: database SQL e Istanza gestita di SQL di Azure.

Specifica che l'utente è per l'autenticazione di Microsoft Entra.

WITH OBJECT_ID = 'objectid'

Si applica a: database SQL e Istanza gestita di SQL di Azure. Specifica l'ID oggetto Microsoft Entra. OBJECT_ID Se viene specificato , il user_name può essere un alias definito dall'utente formato dal nome visualizzato dell'entità originale con un suffisso aggiunto. Il user_name deve essere un nome univoco nella sys.database_principals visualizzazione e rispettare tutte le altre sysname limitazioni. Per altre informazioni sull'uso dell'opzione WITH OBJECT_ID , vedere Account di accesso e utenti di Microsoft Entra con nomi visualizzati non univoci.

Nota

Se il nome visualizzato dell'entità servizio non è duplicato, è necessario usare l'istruzione CREATE LOGIN o CREATE USER predefinite. L'estensione WITH OBJECT_ID è in anteprima pubblica ed è un elemento di ripristino, per la risoluzione dei problemi, implementato per l'uso con entità servizio non univoche. Non è consigliabile usarlo con un'entità servizio univoca. L'uso dell'estensione WITH OBJECT_ID per un'entità servizio senza l’aggiunta di un suffisso verrà eseguito correttamente, ma non risulterà chiaro per quale entità servizio sarà stato creato l'account di accesso o l'utente. È consigliabile creare un alias usando un suffisso per identificare in modo univoco l'entità servizio. L'estensione WITH OBJECT_ID non è supportata da SQL Server.

Osservazioni:

Se FOR LOGIN viene omesso, il nuovo utente del database verrà mappato all'account di accesso di SQL Server con lo stesso nome.

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. Non è possibile selezionare in modo esplicito uno degli schemi predefiniti disponibili come schema preferito. Se non possono essere determinati schemi predefiniti per un utente, viene usato lo schema dbo.

È possibile impostare DEFAULT_SCHEMA prima della creazione dello schema a cui punta.

DEFAULT_SCHEMA non è possibile specificare quando si crea un utente di cui è stato eseguito il mapping a un certificato o a una chiave asimmetrica.

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 WITHOUT LOGIN crea un utente su cui non è stato eseguito il mapping a un accesso di SQL Server. Tale utente può connettersi ad altri database come guest. Le autorizzazioni possono essere assegnate a questo utente senza un account di accesso e quando il contesto di sicurezza viene modificato in un utente senza un account di accesso, gli utenti originali ricevono le autorizzazioni dell'utente senza un account di accesso. Vedere l'esempio D. Creazione e uso di un utente senza un account di accesso.

Solo gli utenti di cui è stato eseguito il mapping a entità di sicurezza di Windows possono contenere un carattere barra rovesciata (\).

CREATE USER non può essere usato per creare un utente guest perché l'utente guest esiste già all'interno di ogni database. Per abilitare l'utente guest, concedere a tale utente l'autorizzazione CONNECT nel modo seguente:

GRANT CONNECT TO guest;  
GO  

Le informazioni sugli utenti del database sono visibili nella vista del catalogo sys.database_principals.

Usare l'estensione FROM EXTERNAL PROVIDER della sintassi per creare account di accesso di Microsoft Entra a livello di server in database SQL di Azure e Istanza gestita di SQL di Azure. Gli account di accesso Microsoft Entra consentono di eseguire il mapping delle entità di sicurezza a livello di database a livello di server agli account di accesso Microsoft Entra. Per creare un utente di Microsoft Entra da un account di accesso di Microsoft Entra, utilizzare la sintassi seguente:

CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login]

Quando si crea l'utente nel database SQL di Azure, il login_name deve corrispondere a un account di accesso Di Microsoft Entra esistente. In caso contrario, tramite la clausola FROM EXTERNAL PROVIDER verrà creato solo un utente di Microsoft Entra senza un account di accesso nel database master. Ad esempio, questo comando crea un utente indipendente:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER

Riepilogo della sintassi

Utenti basati su account di accesso nel database master

Nell'elenco seguente viene illustrata la sintassi possibile per gli utenti basati su account di accesso. Le opzioni dello schema predefinito non sono elencate.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FROM LOGIN SQLAUTHLOGIN

Utenti che eseguono l'autenticazione a livello del database

Nell'elenco seguente viene illustrata la sintassi possibile per gli utenti che possono essere usati solo in un database indipendente. Gli utenti creati non saranno correlati ad alcun accesso nel database master. Le opzioni della lingua e dello schema predefinito non sono elencate.

Importante

Questa sintassi concede agli utenti l'accesso al database e il nuovo accesso al motore di database.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'

Utenti basati su entità di sicurezza di Windows senza account di accesso nel database master

L'elenco seguente illustra la sintassi possibile per gli utenti che hanno accesso al motore di database attraverso un gruppo di Windows, ma che non hanno un accesso nel database master. Questa sintassi può essere usata in tutti i tipi di database. Le opzioni della lingua e dello schema predefinito non sono elencate.

Questa sintassi è simile agli utenti basati su accesso nel database master, tuttavia questa categoria di utente non dispone di un accesso nel database master. L'utente deve disporre dell'accesso al motore di database attraverso un accesso basato su un gruppo di Windows.

Questa sintassi è simile per gli utenti del database indipendente basati su entità di Windows, tuttavia questa categoria di utente non ottiene il nuovo accesso al motore di database.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]

Utenti che non possono eseguire l'autenticazione

L'elenco seguente mostra la sintassi possibile per gli utenti che non possono accedere a SQL Server.

  • CREATE USER RIGHTSHOLDER WITHOUT LOGIN
  • CREATE USER CERTUSER FOR CERTIFICATE SpecialCert
  • CREATE USER CERTUSER FROM CERTIFICATE SpecialCert
  • CREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKey
  • CREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey

Sicurezza

Quando si crea un utente si concede l'accesso a un database, ma non si concede automaticamente alcun accesso agli oggetti contenuti nel database. Dopo avere creato un utente, le azioni comuni consistono nell'aggiungere utenti a ruoli del database con autorizzazione ad accedere a oggetti del database o nel concedere autorizzazioni all'utente per gli oggetti. Per informazioni sulla progettazione di un sistema di autorizzazioni, vedere Introduzione alle autorizzazioni del motore di database.

Considerazioni speciali relative ai database indipendenti

Quando si effettua la connessione a un database indipendente, se l'utente non ha accesso al database master, la stringa di connessione deve includere il nome del database indipendente come catalogo iniziale. Il parametro del catalogo iniziale è sempre obbligatorio per un utente del database indipendente con password.

In un database indipendente, la creazione di utenti agevola la separazione del database dall'istanza del motore di database. In questo modo, risulterà più facile spostare il database in un'altra istanza di SQL Server. Per altre informazioni, vedere Database indipendenti e Utenti di database indipendente: rendere portabile un database. Per modificare un utente del database basato su un accesso dell'autenticazione di SQL Server in un utente del database indipendente con password, vedere sp_migrate_user_to_contained (Transact-SQL).

In un database indipendente non è necessario che gli utenti abbiano accesso nel database master. Gli amministratori del motore di database devono essere consapevoli del fatto che l'accesso a un database indipendente può essere concesso a livello del database, anziché al livello del motore di database. Per altre informazioni, vedere Security Best Practices with Contained Databases.

Quando si usano utenti di database indipendenti nel database SQL di Azure, configurare l'accesso usando una regola del firewall a livello di database, invece di una regola del firewall a livello di server. Per altre informazioni, vedere sp_set_database_firewall_rule (database SQL di Azure).

Per SQL Server 2022 (16.x), database SQL, Istanza gestita di SQL di Azure e utenti di database indipendenti di Azure Synapse Analytics, SSMS supporta l'autenticazione a più fattori. Per ulteriori informazioni, vedere Utilizzare l'autenticazione a più fattori di Microsoft Entra.

Autorizzazioni

È richiesta l'autorizzazione ALTER ANY USER per il database.

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione CREATE USER per il database.

Esempi

R. Creazione di un utente del database basato su un account di accesso di SQL server

Nell'esempio seguente viene innanzitutto creato un accesso di SQL Server denominato AbolrousHazem, quindi viene creato un utente del database corrispondente AbolrousHazem in AdventureWorks2022.

CREATE LOGIN AbolrousHazem   
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';  

Passare a un database utente. Ad esempio, in SQL Server usare l'istruzione USE AdventureWorks2022. In Azure Synapse Analytics e nella piattaforma di strumenti analitici (PDW), è necessario creare una nuova connessione al database utente.

CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;  
GO   

B. Creazione di un utente del database con uno schema predefinito

Nell'esempio seguente viene innanzitutto creato un account di accesso al server denominato WanidaBenshoof con una password, quindi viene creato un corrispondente utente del database Wanida con lo schema predefinito Marketing.

CREATE LOGIN WanidaBenshoof   
    WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';  
USE AdventureWorks2022;  
CREATE USER Wanida FOR LOGIN WanidaBenshoof   
    WITH DEFAULT_SCHEMA = Marketing;  
GO  

C. Creazione di un utente del database da un certificato

Nell'esempio seguente viene creato un utente del database JinghaoLiu dal certificato CarnationProduction50.

Si applica a: SQL Server 2008 (10.0.x) e versioni successive.

USE AdventureWorks2022;  
CREATE CERTIFICATE CarnationProduction50  
    WITH SUBJECT = 'Carnation Production Facility Supervisors',  
    EXPIRY_DATE = '11/11/2011';  
GO  
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;  
GO   

D. Creazione e uso di un utente senza un account di accesso

Nell'esempio seguente viene creato un utente del database CustomApp che non esegue il mapping a un accesso di SQL Server. Nell'esempio viene concessa l'autorizzazioneadventure-works\tengiz0 di un utente per rappresentare l'utente CustomApp.

USE AdventureWorks2022;  
CREATE USER CustomApp WITHOUT LOGIN ;  
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;  
GO   

Per usare le credenziali di CustomApp, l'utente adventure-works\tengiz0 esegue la seguente istruzione.

EXECUTE AS USER = 'CustomApp' ;  
GO  

Per ripristinare le credenziali adventure-works\tengiz0, l'utente esegue la seguente istruzione.

REVERT ;  
GO  

E. Creazione di un utente del database indipendente con password

Nell'esempio seguente viene creato un utente del database indipendente con password. Questo esempio può essere eseguito solo in un database indipendente.

Si applica a: SQL Server 2012 (11.x) e versioni successive. Questo esempio funziona correttamente nel database SQL se si rimuove DEFAULT_LANGUAGE.

USE AdventureWorks2022;  
GO  
CREATE USER Carlo  
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'  
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

F. Creazione di un utente del database indipendente per un account di accesso al dominio

Nell'esempio seguente viene creato un utente del database indipendente per un account di accesso denominato Fritz in un dominio denominato Contoso. Questo esempio può essere eseguito solo in un database indipendente.

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

USE AdventureWorks2022;  
GO  
CREATE USER [Contoso\Fritz] ;  
GO   

G. Creazione di un utente del database indipendente con un SID specifico

Nell'esempio seguente viene creato un utente del database indipendente con autenticazione di SQL Server denominato CarmenW. Questo esempio può essere eseguito solo in un database indipendente.

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

USE AdventureWorks2022;  
GO  
CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+'  
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;

H. Creazione di un utente per copiare dati crittografati

L'esempio seguente consente di creare un utente che può copiare dati protetti dalla funzionalità Always Encrypted da un set di tabelle contenenti colonne crittografate in un altro set di tabelle con colonne crittografate, nello stesso database o in un database diverso. Per altre informazioni, vedere Migrare dati sensibili protetti da Always Encrypted.

Si applica a: SQL Server 2016 (13.x) e versioni successive, Database SQL.

CREATE USER [Chin]   
WITH   
      DEFAULT_SCHEMA = dbo  
    , ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;  

I. Creare un utente di Microsoft Entra da un account di accesso di Microsoft Entra in Azure SQL

Per creare un utente di Microsoft Entra da un account di accesso di Microsoft Entra, usare la sintassi seguente.

Accedere al server logico in Azure o Istanza gestita di SQL usando un account di accesso di Microsoft Entra concesso il sysadmin ruolo in Istanza gestita di SQL o loginmanager ruolo in database SQL. Di seguito viene creato un utente bob@contoso.comdi Microsoft Entra , dall'account di accesso bob@contoso.com. Questo account di accesso è stato creato nell'esempio CREATE LOGIN.

CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
GO

Importante

Quando si crea un UTENTE da un account di accesso di Microsoft Entra, specificare il user_name come lo stesso login_name da LOGIN.

È supportata la creazione di un utente di Microsoft Entra come gruppo da un account di accesso di Microsoft Entra che è un gruppo.

CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];

GO

È anche possibile creare un utente di Microsoft Entra da un account di accesso di Microsoft Entra che è un gruppo.

CREATE USER [bob@contoso.com] FROM LOGIN [MS Entra group];

GO

J. Creare un utente di database indipendente da un'entità microsoft Entra

La sintassi seguente crea un utente bob@contoso.comdi Microsoft Entra in un database senza un account di accesso associato in master:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO

Passaggi successivi

Dopo aver creato l'utente, è consigliabile aggiungerlo a un ruolo del database tramite l'istruzione ALTER ROLE.
È anche consigliabile concedere autorizzazioni per oggetti al ruolo perché possa accedere alle tabelle. Per informazioni generali sul modello di sicurezza di SQL Server, vedere Autorizzazioni.

Creare un utente di database
sys.database_principals (Transact-SQL)
ALTER USER (Transact-SQL)
DROP USER (Transact-SQL)
CREATE LOGIN (Transact-SQL)
EVENTDATA (Transact-SQL)
Database indipendenti
Connessione a database SQL tramite l'autenticazione di Microsoft Entra
Introduzione alle autorizzazioni del motore di database