Condividi tramite


CREATE LOGIN (Transact-SQL)

Crea un account di accesso per i database di sistema di SQL Server, database SQL di Azure, Istanza gestita di SQL di Azure, Azure Synapse Analytics o Analytics Platform. Scegliere una delle schede seguenti per la sintassi, gli argomenti, le osservazioni, le autorizzazioni e gli esempi per una determinata versione.

CREATE LOGIN partecipa nelle transazioni. Se si esegue CREATE LOGIN all'interno di una transazione di cui viene eseguito il rollback, la creazione dell'account di accesso viene sottoposta a rollback. Se si esegue all'interno di una transazione, l'account di accesso creato può essere usato solo dopo il commit della transazione.

Nota

Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).

Per altre informazioni sulle convenzioni della sintassi, vedere Convenzioni della 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
CREATE LOGIN login_name { WITH <option_list1> | FROM <sources> }

<option_list1> ::=
    PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ]
    [ , <option_list2> [ ,... ] ]

<option_list2> ::=
    SID = sid
    | DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language
    | CHECK_EXPIRATION = { ON | OFF}
    | CHECK_POLICY = { ON | OFF}
    | CREDENTIAL = credential_name

<sources> ::=
    WINDOWS [ WITH <windows_options>[ ,... ] ]
    | EXTERNAL PROVIDER
    | CERTIFICATE certname
    | ASYMMETRIC KEY asym_key_name

<windows_options> ::=
    DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language

Argomenti

login_name

Specifica il nome dell'account di accesso creato. Esistono cinque tipi di account di accesso: account di accesso di SQL Server, account di accesso di Windows, account di accesso microsoft Entra, account di accesso mappati ai certificati e account di accesso con mapping a chiave asimmetrica.

Quando si creano account di accesso mappati da un account di dominio di Windows, è necessario usare il nome di accesso nel formato [<domainName>\<login_name>]. Non è possibile usare un UPN nel formato login_name@DomainName. Per un esempio, vedere l'esempio E più avanti in questo articolo. Gli account di accesso di autenticazione sono di tipo sysname e devono essere conformi alle regole per gli identificatori e non possono contenere una barra rovesciata (). Gli account di accesso di Windows possono contenere un simbolo "\". Gli account di accesso basati sugli utenti di Active Directory sono limitati a nomi di meno di 21 caratteri.

Quando si usa la clausola FROM EXTERNAL PROVIDER , il nome dell'account di accesso deve corrispondere al nome visualizzato di un'entità Microsoft Entra esistente nello stesso tenant a cui l'istanza DI SQL è abilitata per Arc. Gli utenti, i gruppi e le applicazioni di Microsoft Entra possono essere usati per creare account di accesso.

PASSWORD ='password'

Si applica solo agli account di accesso SQL Server. Specifica la password per l'account di accesso che viene creato. Usare una password complessa. Per altre informazioni, vedere Password complesse e Criteri password. 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.

Per le password viene fatta distinzione tra maiuscole e minuscole. Le password devono essere sempre lunghe almeno otto caratteri e non possono superare i 128 caratteri. Le password possono includere i caratteri a-z, A-Z, 0-9 e la maggior parte dei caratteri non alfanumerici. Le password non possono contenere virgolette singole o il login_name.

PASSWORD = hashed_password

Si applica solo alla parola chiave HASHED. Specifica il valore hash della password per l'account di accesso in fase di creazione.

HASH

Si applica solo agli account di accesso SQL Server. Specifica che è già stato eseguito l'hashing per la password immessa dopo l'argomento PASSWORD. Se questa opzione non è selezionata, la stringa immessa come password viene sottoposto a hashing prima che venga archiviata nel database. Questa opzione deve essere utilizzata solo per la migrazione dei database da un server a un altro. Non usare l'opzione HASHED per creare nuovi account di accesso. L'opzione HASHED non può essere usata con gli hash creati da SQL 7 o versioni precedenti.

MUST_CHANGE

Si applica solo agli account di accesso SQL Server. Se questa opzione è inclusa, in SQL Server viene richiesto all'utente di immettere una nuova password al primo uso del nuovo account di accesso.

CREDENTIAL =credential_name

Nome della credenziale su cui eseguire il mapping al nuovo account di accesso di SQL Server. La credenziale deve già esistere nel server. Attualmente questa opzione consente solo di connettere la credenziale a un account di accesso. Non è possibile eseguire il mapping di credenziali all'account di accesso amministratore di sistema (sa).

SID = sid

Usato per ricreare un account di accesso. Si applica solo agli account di accesso con autenticazione di SQL Server, non agli account di accesso con autenticazione di Windows. Specifica il SID del nuovo account di accesso con autenticazione di SQL Server. Se questa opzione non viene usata, SQL Server assegna un SID automaticamente. La struttura del SID dipende dalla versione di SQL Server. SID di account di accesso di SQL Server: valore letterale (binary(16)) a 16 byte basato su un GUID. Ad esempio: SID = 0x14585E90117152449347750164BA00A7.

DEFAULT_DATABASE =database

Specifica il database predefinito da assegnare all'account di accesso. Se questa opzione non è inclusa, il database predefinito è impostato su master.

DEFAULT_LANGUAGE =language

Specifica la lingua predefinita da assegnare all'account di accesso. Se questa opzione non è inclusa, la lingua predefinita viene impostata sulla lingua predefinita corrente del server. Se la lingua predefinita del server viene modificata in seguito, la lingua predefinita dell'account di accesso rimane inalterata.

CHECK_EXPIRATION = { ON | OFF }

Si applica solo agli account di accesso SQL Server. Specifica se i criteri di scadenza delle password devono essere applicati a questo account di accesso. Il valore predefinito è OFF.

CHECK_POLICY = { ON | OFF }

Si applica solo agli account di accesso SQL Server. Specifica che i criteri password di Windows del computer in cui è in esecuzione SQL Server devono essere applicati a questo account di accesso. Il valore predefinito è ON.

Se i criteri di Windows richiedono password complesse, queste devono contenere almeno tre dei quattro caratteri seguenti:

  • Un carattere maiuscolo (A-Z).
  • Un carattere minuscolo (a-z)
  • Una cifra (0-9).
  • Uno dei caratteri non alfanumerici, ad esempio uno spazio, _, @, *, ^, %, !, $, #, #o &.

WINDOWS

Specifica che è stato eseguito il mapping dell'account di accesso a un account di accesso di Windows.

FROM EXTERNAL PROVIDER

Specifica che l'account di accesso viene mappato a un'entità Di sicurezza Microsoft Entra. Questa opzione è disponibile per SQL Server 2022 e versioni successive abilitate per Arc. Per altre informazioni, vedere Autenticazione di Microsoft Entra per SQL Server

CERTIFICATE certname

Specifica il nome di un certificato da associare all'account di accesso. Questo certificato deve essere già presente nel master database.

ASYMMETRIC KEY asym_key_name

Specifica il nome di una chiave asimmetrica da associare all'account di accesso. Questa chiave deve essere già presente nel master database.

Osservazioni:

  • Per le password viene fatta distinzione tra maiuscole e minuscole.
  • Il prehashing delle password è supportato solo quando si creano account di accesso di SQL Server.
  • Se MUST_CHANGE è specificato, CHECK_EXPIRATION e CHECK_POLICY devono essere impostati su ON. In caso contrario, l'istruzione non verrà eseguita correttamente.
  • Una combinazione di CHECK_POLICY = OFF e CHECK_EXPIRATION = ON non è supportata.
  • Quando CHECK_POLICY è impostato su OFF, lockout_time viene reimpostato e CHECK_EXPIRATION viene impostato su OFF.

Importante

CHECK_EXPIRATION e CHECK_POLICY vengono applicati solo in Windows Server 2003 e versioni successive. Per ulteriori informazioni, vedere Password Policy.

  • Gli account di accesso creati da certificati o chiavi asimmetriche vengono utilizzati solo per la firma del codice Non possono essere usati per connettersi a SQL Server. È possibile creare un account di accesso da un certificato o una chiave asimmetrica solo quando il certificato o la chiave asimmetrica esiste già in master.
  • Per uno script con cui trasferire gli account di accesso, vedere Trasferimento di accessi e password tra istanze di SQL Server.
  • La creazione automatica di un account di accesso abilita il nuovo account a cui viene concessa l'autorizzazione CONNECT SQL a livello di server.
  • La modalità di autenticazione del server deve corrispondere al tipo di account di accesso per consentire l'accesso.
  • Per informazioni sulla progettazione di un sistema di autorizzazioni, vedere Introduzione alle autorizzazioni del motore di database.

Autorizzazioni

  • Solo gli utenti con autorizzazione ALTER ANY LOGIN per il server o appartenenza al ruolo predefinito del server securityadmin possono creare account di accesso. Per altre informazioni, vedere Ruoli a livello di server e ALTER SERVER ROLE.
  • Se viene usata l'opzione CREDENTIAL, è richiesta anche l'autorizzazione ALTER ANY CREDENTIAL nel server.

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione CREATE LOGIN per il server o l'appartenenza al ruolo predefinito del server ##MS_LoginManager## .

Dopo la creazione di un account di accesso

Una volta creato, un account di accesso può connettersi a SQL Server ma ha solo le autorizzazioni concesse al ruolo public. Provare a eseguire alcune delle attività seguenti.

  • Per connettersi a un database, creare un utente del database per l'account di accesso. Per altre informazioni, vedere CREATE USER.
  • Creare un ruolo del server definito dall'utente tramite CREATE SERVER ROLE. Usare ALTER SERVER ROLE ... ADD MEMBER per aggiungere il nuovo account di accesso al ruolo del server definito dall'utente. Per altre informazioni, vedere CREATE SERVER ROLE e ALTER SERVER ROLE.
  • Usare sp_addsrvrolemember per aggiungere l'account di accesso a un ruolo predefinito del server. Per altre informazioni, vedere Ruoli a livello di Server e sp_addsrvrolemember.
  • Usare l'istruzione GRANT per concedere le autorizzazioni a livello di server al nuovo account di accesso o a un ruolo in cui esso è contenuto. Per altre informazioni, vedere GRANT.

Esempi

R. Creare un account di accesso con una password

Nell'esempio seguente viene creato un account di accesso per un utente specifico e viene assegnata una password.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. Creare un account di accesso con una password che deve essere modificata

Nell'esempio seguente viene creato un account di accesso per un utente specifico e viene assegnata una password. L'opzione MUST_CHANGE richiede all'utente di modificare questa password alla prima connessione al server.

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

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>'
    MUST_CHANGE, CHECK_EXPIRATION = ON;
GO

Nota

Impossibile utilizzare l'opzione MUST_CHANGE se CHECK_EXPIRATION è impostato su OFF.

C. Creare un account di accesso mappato a una credenziale

Nell'esempio seguente viene creato l'account di accesso per utente specifico, utilizzando il relativo nome. Su questo account di accesso viene eseguito il mapping alla credenziale.

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

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>',
    CREDENTIAL = <credentialName>;
GO

D. Creare un account di accesso da un certificato

Nell'esempio seguente viene creato l'account di accesso per un determinato utente da un certificato in master.

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

USE MASTER;
CREATE CERTIFICATE <certificateName>
    WITH SUBJECT = '<login_name> certificate in master database',
    EXPIRY_DATE = '12/05/2025';
GO
CREATE LOGIN <login_name> FROM CERTIFICATE <certificateName>;
GO

E. Creare un account di accesso da un account di dominio di Windows

Nell'esempio seguente viene creato un account di accesso da un account di dominio di Windows.

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

CREATE LOGIN [<domainName>\<login_name>] FROM WINDOWS;
GO

F. Creare un account di accesso da un SID

L'esempio seguente crea prima un account di accesso con autenticazione di SQL Server e determina il SID dell'account di accesso.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';
SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

La query restituisce 0x241C11948AEEB749B0D22646DB1A19F2 come SID. La query dell'utente restituirà un valore diverso. Le istruzioni seguenti eliminano l'account di accesso e quindi ricreano l'account di accesso. Utilizzare il SID della query precedente.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

G. Creare un account di accesso con più argomenti

Nell'esempio seguente viene illustrato come collegare più argomenti insieme usando le virgole tra ogni argomento.

CREATE LOGIN [MyUser]
WITH PASSWORD = 'MyPassword',
DEFAULT_DATABASE = MyDatabase,
CHECK_POLICY = OFF,
CHECK_EXPIRATION = OFF ;

H. Creare un account di accesso SQL con password con hash

L'esempio seguente mostra come creare account di accesso SQL con la stessa password degli account di accesso esistenti come avviene in uno scenario di migrazione. Il primo passaggio consiste nel recuperare l'hash delle password dagli account di accesso esistenti nel server di database di origine. Verrà quindi usato lo stesso hash per creare l'account di accesso in un nuovo server di database. In questo modo, il nuovo account di accesso avrà la stessa password del server precedente.

-- run this to retrieve the password hash for an individual Login:
SELECT LOGINPROPERTY('Andreas','PASSWORDHASH') AS password_hash;
-- as an alternative, the catalog view sys.sql_logins can be used to retrieve the password hashes for multiple accounts at once. (This could be used to create a dynamic sql statemnt from the result set)
SELECT name, password_hash
FROM sys.sql_logins
  WHERE
    principal_id > 1    -- excluding sa
    AND
    name NOT LIKE '##MS_%##' -- excluding special MS system accounts
-- create the new SQL Login on the new database server using the hash of the source server
CREATE LOGIN Andreas
  WITH PASSWORD = 0x02000A1A89CD6C6E4C8B30A282354C8EA0860719D5D3AD05E0CAE1952A1C6107A4ED26BEBA2A13B12FAB5093B3CC2A1055910CC0F4B9686A358604E99BB9933C75B4EA48FDEA HASHED;

I. Creare un account di accesso per un utente di Microsoft Entra

Nell'esempio seguente viene creato un account di accesso per l'account joe@contoso.onmicrosoft.com Microsoft Entra esistente nel tenant di Microsoft Entra denominato contoso.

CREATE LOGIN [joe@contoso.onmicrosoft.com] FROM EXTERNAL PROVIDER

GO

J. Creare un account di accesso per un account Microsoft Entra federato

Nell'esempio seguente viene creato un account di accesso per un account bob@contoso.com Microsoft Entra federato esistente in un tenant denominato contoso. L'utente bob può anche essere un utente guest.

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

K. Creare un account di accesso per un gruppo Microsoft Entra

L'esempio seguente crea un account di accesso per il gruppo mygroup Microsoft Entra esistente nel tenant contoso.

CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
GO

.L Creare un account di accesso per un'applicazione Microsoft Entra

Nell'esempio seguente viene creato un account di accesso per l'applicazione Microsoft Entra myapp esistente nel tenant contoso.

CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER

* Database SQL di Azure *  

 

Database SQL

Per altre informazioni sulla connettività e l'autorizzazione per database SQL di Azure, vedere:

Sintassi

-- Syntax for Azure SQL Database
CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

Argomenti

login_name

Nota

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

Se utilizzata con la clausola FROM EXTERNAL PROVIDER , l'account di accesso specifica l'entità Microsoft Entra, ovvero un utente, un gruppo o un'applicazione Microsoft Entra. In caso contrario, l'account di accesso rappresenta il nome dell'account di accesso SQL creato.

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

FROM EXTERNAL PROVIDER

Specifica che l'account di accesso è per l'autenticazione di Microsoft Entra.

WITH OBJECT_ID = 'objectid'

Specifica l'ID oggetto Microsoft Entra. OBJECT_ID Se viene specificato , il login_name non deve corrispondere al nome visualizzato di Microsoft Entra. Il login_name deve essere un nome univoco nella sys.server_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 è un elemento di ripristino della 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.

PASSWORD ='password'

Specifica la password per l'account di accesso SQL che viene creato. Usare una password complessa. Per altre informazioni, vedere Password complesse e Criteri password. 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.

Per le password viene fatta distinzione tra maiuscole e minuscole. Le password devono essere sempre lunghe almeno otto caratteri e non possono superare i 128 caratteri. Le password possono includere i caratteri a-z, A-Z, 0-9 e la maggior parte dei caratteri non alfanumerici. Le password non possono contenere virgolette singole o il login_name.

SID = sid

Usato per ricreare un account di accesso. Si applica solo agli account di accesso con autenticazione di SQL Server, non agli account di accesso con autenticazione di Windows. Specifica il SID del nuovo account di accesso con autenticazione di SQL Server. Se questa opzione non viene usata, SQL Server assegna automaticamente un SID. La struttura del SID dipende dalla versione di SQL Server. Per il database SQL, si tratta in genere di un valore letterale (binary(32)) a 32 byte costituito da 0x01060000000000640000000000000000 e 16 byte che rappresentano un GUID. Ad esempio: SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7.

Osservazioni:

  • Per le password viene fatta distinzione tra maiuscole e minuscole.
  • La creazione automatica di un account di accesso abilita il nuovo account a cui viene concessa l'autorizzazione CONNECT SQL a livello di server.

Importante

Per informazioni sull'uso di account di accesso e utenti nel database SQL di Azure, vedere Gestire gli account di accesso nel database SQL di Azure.

Account di accesso

account di accesso database SQL

L'istruzione CREATE LOGIN deve essere l'unica istruzione in un batch.

In alcuni metodi di connessione al database SQL, come ad esempio sqlcmd, è necessario accodare il nome del server di database SQL al nome dell'account di accesso nella stringa di connessione usando la notazione <login>@<server>. Ad esempio, se l'account di accesso è login1 e il nome completo del server del database SQL è servername.database.windows.net, il parametro username della stringa di connessione deve essere login1@servername. Poiché la lunghezza totale del parametro username è di 128 caratteri, login_name è limitato a 127 caratteri meno la lunghezza del nome del server. Nell'esempio la lunghezza di login_name può essere solo di 117 caratteri poiché servername è costituito da 10 caratteri.

In database SQL è necessario essere connessi al master database con le autorizzazioni appropriate per creare un account di accesso. Per altre informazioni, vedere Creare ulteriori account di accesso e utenti con autorizzazioni amministrative.

Le regole di SQL Server consentono di creare un account di accesso per l'autenticazione di SQL Server nel formato <loginname>@<servername>. Se il server di database SQL è myazureserver e l'account di accesso è myemail@contoso.com, è necessario specificare l'account di accesso come myemail@contoso.com@myazureserver.

Nel database SQL i dati dell'account di accesso necessari per autenticare una connessione e le regole del firewall a livello di server vengono memorizzati temporaneamente nella cache in ogni database. Questa cache viene aggiornata periodicamente. Per forzare un aggiornamento della cache di autenticazione e assicurarsi che un database abbia la versione più recente della tabella di account di accesso, eseguire DBCC FLUSHAUTHCACHE.

Autorizzazioni

Solo l'account di accesso dell'entità a livello di server (creato dal processo di provisioning) o i membri del loginmanager ruolo del database nel master database possono creare nuovi account di accesso. Per altre informazioni, vedere Creare ulteriori account di accesso e utenti con autorizzazioni amministrative.

Esempi

R. Creare un account di accesso con una password

Nell'esempio seguente viene creato un account di accesso per un utente specifico e viene assegnata una password. Connettersi ai master database, quindi usare l'esempio di codice seguente.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. Creare un account di accesso da un SID

L'esempio seguente crea prima un account di accesso con autenticazione di SQL Server e determina il SID dell'account di accesso. Connettersi ai master database, quindi usare l'esempio di codice seguente.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';

SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

La query restituisce 0x241C11948AEEB749B0D22646DB1A19F2 come SID. La query dell'utente restituirà un valore diverso. Le istruzioni seguenti eliminano l'account di accesso e quindi ricreano l'account di accesso. Utilizzare il SID della query precedente.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

C. Creare un account di accesso con un account Microsoft Entra

Questo esempio crea un account di accesso nel server logico SQL di Azure usando le credenziali di un utente bob@contoso.com presente nel dominio Microsoft Entra denominato contoso. Connettersi ai master database, quindi usare l'esempio di codice seguente.

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

D. Creare un account di accesso con un alias usando l'ID oggetto

È possibile creare un alias per il login_name specificando l'ID oggetto dell'entità servizio o del gruppo Microsoft Entra. Connettersi ai master database, quindi usare l'esempio di codice seguente.

CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER 
  WITH OBJECT_ID='4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx';

Per altre informazioni su come ottenere l'ID oggetto di un'entità servizio, vedere Oggetti entità servizio in Microsoft Entra ID.

* Istanza gestita
Istanza gestita *

 

Istanza gestita di SQL di Azure

Sintassi

-- Syntax for Azure SQL Managed Instance
CREATE LOGIN login_name [FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] ] { WITH <option_list> [,..]}

<option_list> ::=
    PASSWORD = {'password'}
    | SID = sid
    | DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language

Argomenti

login_name

Se utilizzata con la clausola FROM EXTERNAL PROVIDER , l'account di accesso specifica l'entità Microsoft Entra, ovvero un utente, un gruppo o un'applicazione Microsoft Entra. In caso contrario, l'account di accesso rappresenta il nome dell'account di accesso SQL creato.

Gli utenti di Microsoft Entra e le entità servizio 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.

FROM EXTERNAL PROVIDER

Specifica che l'account di accesso è per l'autenticazione di Microsoft Entra.

WITH OBJECT_ID = 'objectid'

Specifica l'ID oggetto Microsoft Entra. OBJECT_ID Se viene specificato , il login_name può essere un alias definito dall'utente formato dal nome visualizzato dell'entità originale con un suffisso aggiunto. Il login_name deve essere un nome univoco nella sys.server_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 è necessario 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.

PASSWORD = 'password'

Specifica la password per l'account di accesso SQL che viene creato. Usare una password complessa. Per altre informazioni, vedere Password complesse e Criteri password. 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.

Per le password viene fatta distinzione tra maiuscole e minuscole. Le password devono sempre avere una lunghezza di almeno 10 caratteri e non possono superare i 128 caratteri. Le password possono includere i caratteri a-z, A-Z, 0-9 e la maggior parte dei caratteri non alfanumerici. Le password non possono contenere virgolette singole o il login_name.

SID = sid

Usato per ricreare un account di accesso. Si applica solo agli account di accesso per l'autenticazione di SQL Server. Specifica il SID del nuovo account di accesso con autenticazione di SQL Server. Se questa opzione non viene usata, SQL Server assegna automaticamente un SID. La struttura del SID dipende dalla versione di SQL Server. Per il database SQL, si tratta in genere di un valore letterale (binary(32)) a 32 byte costituito da 0x01060000000000640000000000000000 e 16 byte che rappresentano un GUID. Ad esempio: SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7.

Osservazioni:

  • La FROM EXTERNAL PROVIDER sintassi crea entità a livello di server mappate agli account Microsoft Entra

  • Quando FROM EXTERNAL PROVIDER viene specificato:

    • Il login_name deve rappresentare un account Microsoft Entra esistente (utente, gruppo o applicazione) accessibile in Microsoft Entra ID dall'Istanza gestita di SQL di Azure corrente. Per le entità di sicurezza di Microsoft Entra, la sintassi CREATE LOGIN richiede:

      • UserPrincipalName dell'oggetto Microsoft Entra per gli utenti di Microsoft Entra.

      • DisplayName dell'oggetto Microsoft Entra per le applicazioni e i gruppi di Microsoft Entra.

    • Non è possibile usare l'opzione PASSWORD .

  • Per impostazione predefinita, quando la FROM EXTERNAL PROVIDER clausola viene omessa, viene creato un normale account di accesso SQL.

  • Gli account di accesso di Microsoft Entra sono visibili in sys.server_principals, con il valore della colonna di tipo impostato su E e impostato su EXTERNAL_LOGIN type_desc per gli account di accesso mappati agli utenti di Microsoft Entra o il valore della colonna di tipo impostato X su e type_desc il valore impostato su EXTERNAL_GROUP per gli account di accesso mappati ai gruppi di Microsoft Entra.

  • Per uno script con cui trasferire gli account di accesso, vedere Trasferimento di accessi e password tra istanze di SQL Server.

  • La creazione automatica di un account di accesso abilita il nuovo account a cui viene concessa l'autorizzazione CONNECT SQL a livello di server.

Importante

Per informazioni sull'uso di account di accesso e utenti nel database SQL di Azure, vedere Gestire gli account di accesso nel database SQL di Azure.

Account di accesso e autorizzazioni

Solo l'account di accesso dell'entità a livello di server (creato dal processo di provisioning) o i membri del securityadmin ruolo del database o sysadmin nel master database possono creare nuovi account di accesso. Per altre informazioni, vedere Ruoli a livello di server e ALTER SERVER ROLE.

Per impostazione predefinita, l'autorizzazione standard concessa a un account di accesso Microsoft Entra appena creato è master : CONNECT SQL e VIEW ANY DATABASE.

account di accesso Istanza gestita di SQL

  • È richiesta l'autorizzazione ALTER ANY LOGIN nel server o l'appartenenza a uno dei ruoli predefiniti del server securityadmin o sysadmin. Solo un account Microsoft Entra con autorizzazione ALTER ANY LOGIN per il server o l'appartenenza a uno di questi ruoli può eseguire il comando create.

  • Se l'account di accesso è un'entità SQL, solo gli account di accesso che fanno parte del sysadmin ruolo possono usare il comando create per creare account di accesso per un account Microsoft Entra.

  • Deve essere membro dello stesso tenant di Microsoft Entra del Istanza gestita di SQL di Azure.

Dopo la creazione di un account di accesso

Una volta creato, un account di accesso può connettersi a un'istanza gestita, ma ha solo le autorizzazioni concesse al ruolo public. Provare a eseguire alcune delle attività seguenti.

  • Per creare un utente da un account di accesso di Microsoft Entra, vedere CREATE USER.

  • Per concedere autorizzazioni a un utente in un database, usare l'istruzione ALTER SERVER ROLE ... ADD MEMBER per aggiungere l'utente a uno dei ruoli predefiniti del database o a un ruolo personalizzato oppure concedere autorizzazioni all'utente direttamente usando l'istruzione GRANT . Per altre informazioni, vedere Utenti non amministratori, Ruoli amministrativi aggiuntivi a livello di server, ALTER SERVER ROLE e l'istruzione GRANT.

  • Per concedere autorizzazioni a livello di server, creare un utente del database nel master database e usare l'istruzione ALTER SERVER ROLE ... ADD MEMBER per aggiungere l'utente a uno dei ruoli del server amministrativo. Per altre informazioni, vedere Ruoli a livello di server, ALTER SERVER ROLE e Ruoli del server.

    • Usare il comando seguente per aggiungere il sysadmin ruolo a un account di accesso di Microsoft Entra: ALTER SERVER ROLE sysadmin ADD MEMBER [MS_Entra_login]
  • Usare l'istruzione GRANT per concedere le autorizzazioni a livello di server al nuovo account di accesso o a un ruolo in cui esso è contenuto. Per altre informazioni, vedere GRANT.

Limiti

  • L'impostazione di un account di accesso di Microsoft Entra mappata a un gruppo Microsoft Entra come proprietario del database non è supportata.

  • La rappresentazione degli account di accesso di Microsoft Entra che usano altre entità di Microsoft Entra è supportata, ad esempio la clausola EXECUTE AS .

  • Solo le entità server (account di accesso) che fanno parte del sysadmin ruolo possono eseguire le operazioni seguenti destinate alle entità di sicurezza Microsoft Entra:

    • EXECUTE AS USER
    • EXECUTE AS LOGIN
  • Gli utenti esterni (guest) importati da un'altra directory di Microsoft Entra non possono essere configurati direttamente come amministratore di Microsoft Entra per Istanza gestita di SQL usando il portale di Azure. Aggiungere invece un utente esterno a un gruppo assegnabile di ruoli e configurare il gruppo come amministratore dell'istanza. È possibile usare PowerShell o l'interfaccia della riga di comando di Azure per impostare singoli utenti guest come amministratore dell'istanza.

  • Gli account di accesso non vengono replicati nell'istanza secondaria in un gruppo di failover. Gli account di accesso vengono salvati nel master database, ovvero un database di sistema e, di conseguenza, non vengono replicati geograficamente. Per risolvere questo problema, gli account di accesso devono essere creati con lo stesso SID nell'istanza secondaria.

-- Code to create login on the secondary instance
CREATE LOGIN foo WITH PASSWORD = '<enterStrongPasswordHere>', SID = <login_sid>;

Esempi

R. Creare un account di accesso con una password

Nell'esempio seguente viene creato un account di accesso per un utente specifico e viene assegnata una password.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. Creare un account di accesso da un SID

L'esempio seguente crea prima un account di accesso con autenticazione di SQL Server e determina il SID dell'account di accesso.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';

SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

La query restituisce 0x241C11948AEEB749B0D22646DB1A19F2 come SID. La query dell'utente restituirà un valore diverso. Le istruzioni seguenti eliminano l'account di accesso e quindi ricreano l'account di accesso. Utilizzare il SID della query precedente.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

C. Creare un account di accesso per un utente di Microsoft Entra

Nell'esempio seguente viene creato un account di accesso per l'account joe@contoso.onmicrosoft.com Microsoft Entra esistente nel tenant denominato contoso.

CREATE LOGIN [joe@contoso.onmicrosoft.com] FROM EXTERNAL PROVIDER

GO

D. Creare un account di accesso per un account Microsoft Entra federato

Nell'esempio seguente viene creato un account di accesso per un account bob@contoso.com Microsoft Entra federato esistente in un tenant denominato contoso. L'utente bob può anche essere un utente guest.

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

E. Creare un account di accesso per un gruppo Microsoft Entra

L'esempio seguente crea un account di accesso per il gruppo mygroup Microsoft Entra esistente nel tenant contoso.

CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
GO

F. Creare un account di accesso per un'applicazione Microsoft Entra

Nell'esempio seguente viene creato un account di accesso per l'applicazione Microsoft Entra myapp esistente nel tenant contoso.

CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER

G. Controllare i nuovi account di accesso aggiunti

Per controllare i nuovi account di accesso aggiunti, eseguire il comando T-SQL seguente:

SELECT *
FROM sys.server_principals;
GO

* Azure Synapse
Analytics *

 

Azure Synapse Analytics

Sintassi

-- Syntax for Azure Synapse Analytics
CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

Argomenti

Nota

Le entità server (account di accesso) di Microsoft Entra sono attualmente in anteprima.

Se utilizzata con la clausola FROM EXTERNAL PROVIDER , l'account di accesso specifica l'entità Microsoft Entra, ovvero un utente, un gruppo o un'applicazione Microsoft Entra. In caso contrario, l'account di accesso rappresenta il nome dell'account di accesso SQL creato.

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

FROM EXTERNAL PROVIDER

Specifica che l'account di accesso è per l'autenticazione di Microsoft Entra.

login_name

Specifica il nome dell'account di accesso creato. SQL Analytics in Azure Synapse supporta solo gli account di accesso SQL. Per creare account per gli utenti di Microsoft Entra, usare l'istruzione CREATE USER .

PASSWORD ='password'

Specifica la password per l'account di accesso SQL che viene creato. Usare una password complessa. Per altre informazioni, vedere Password complesse e Criteri password. 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.

Per le password viene fatta distinzione tra maiuscole e minuscole. Le password devono essere sempre lunghe almeno otto caratteri e non possono superare i 128 caratteri. Le password possono includere i caratteri a-z, A-Z, 0-9 e la maggior parte dei caratteri non alfanumerici. Le password non possono contenere virgolette singole o il login_name.

SID = sid

Usato per ricreare un account di accesso. Si applica solo agli account di accesso con autenticazione di SQL Server, non agli account di accesso con autenticazione di Windows. Specifica il SID del nuovo account di accesso con autenticazione di SQL Server. Se questa opzione non viene usata, SQL Server assegna automaticamente un SID. La struttura del SID dipende dalla versione di SQL Server. Per SQL Analytics si tratta di un valore letterale (binary(32)) a 32 byte costituito da 0x01060000000000640000000000000000 e 16 byte che rappresentano un GUID. Ad esempio: SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7.

Osservazioni:

Account di accesso

L'istruzione CREATE LOGIN deve essere l'unica istruzione in un batch.

Quando ci si connette ad Azure Synapse usando strumenti come sqlcmd, è necessario accodare il nome del server di SQL Analytics al nome dell'account di accesso nella stringa di connessione usando la notazione <login>@<server>. Ad esempio, se l'account di accesso è login1 e il nome completo del server di SQL Analytics è servername.database.windows.net, il parametro username della stringa di connessione deve essere login1@servername. Poiché la lunghezza totale del parametro username è di 128 caratteri, login_name è limitato a 127 caratteri meno la lunghezza del nome del server. Nell'esempio la lunghezza di login_name può essere solo di 117 caratteri poiché servername è costituito da 10 caratteri.

Per creare un account di accesso, è necessario essere connessi al master database.

Le regole di SQL Server consentono di creare un account di accesso per l'autenticazione di SQL Server nel formato <loginname>@<servername>. Se il server di database SQL è myazureserver e l'account di accesso è myemail@contoso.com, è necessario specificare l'account di accesso come myemail@contoso.com@myazureserver.

I dati dell'account di accesso necessari per autenticare una connessione e le regole del firewall a livello di server sono memorizzati temporaneamente nella cache in ogni database. Questa cache viene aggiornata periodicamente. Per forzare un aggiornamento della cache di autenticazione e assicurarsi che un database abbia la versione più recente della tabella di account di accesso, eseguire DBCC FLUSHAUTHCACHE.

Per altre informazioni sugli account di accesso, vedere Gestione di database e account di accesso.

Autorizzazioni

Solo l'account di accesso dell'entità a livello di server (creato dal processo di provisioning) o i membri del loginmanager ruolo del database nel master database possono creare nuovi account di accesso. Per altre informazioni, vedere Ruoli a livello di server e ALTER SERVER ROLE.

Dopo la creazione di un account di accesso

Non appena viene creato, l'account di accesso può connettersi ad Azure Synapse ma ha solo le autorizzazioni concesse al ruolo public. Provare a eseguire alcune delle attività seguenti.

  • Per connettersi a un database, creare un utente del database per l'account di accesso. Per altre informazioni, vedere CREATE USER.

  • Per concedere autorizzazioni a un utente in un database, usare l'istruzione ALTER SERVER ROLE ... ADD MEMBER per aggiungere l'utente a uno dei ruoli predefiniti del database o a un ruolo personalizzato oppure concedere autorizzazioni all'utente direttamente usando l'istruzione GRANT . Per altre informazioni, vedere Utenti non amministratori, Ruoli amministrativi aggiuntivi a livello di server, ALTER SERVER ROLE e l'istruzione GRANT.

  • Per concedere autorizzazioni a livello di server, creare un utente del database nel master database e usare l'istruzione ALTER SERVER ROLE ... ADD MEMBER per aggiungere l'utente a uno dei ruoli del server amministrativo. Per altre informazioni, vedere Ruoli a livello di server, ALTER SERVER ROLE e Ruoli del server.

  • Usare l'istruzione GRANT per concedere le autorizzazioni a livello di server al nuovo account di accesso o a un ruolo in cui esso è contenuto. Per altre informazioni, vedere GRANT.

Esempi

R. Creare un account di accesso con una password

Nell'esempio seguente viene creato un account di accesso per un utente specifico e viene assegnata una password.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. Creare un account di accesso da un SID

L'esempio seguente crea prima un account di accesso con autenticazione di SQL Server e determina il SID dell'account di accesso.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';

SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

La query restituisce 0x241C11948AEEB749B0D22646DB1A19F2 come SID. La query dell'utente restituirà un valore diverso. Le istruzioni seguenti eliminano l'account di accesso e quindi ricreano l'account di accesso. Utilizzare il SID della query precedente.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

* Piattaforma di strumenti
analitici (PDW) *

 

Sistema della piattaforma di analisi

Sintassi

-- Syntax for Analytics Platform System
CREATE LOGIN loginName { WITH <option_list1> | FROM WINDOWS }

<option_list1> ::=
    PASSWORD = { 'password' } [ MUST_CHANGE ]
    [ , <option_list> [ ,... ] ]

<option_list> ::=
      CHECK_EXPIRATION = { ON | OFF}
    | CHECK_POLICY = { ON | OFF}

Argomenti

login_name

Specifica il nome dell'account di accesso creato. Esistono quattro tipi di account di accesso: account di accesso di SQL Server, account di accesso di Windows, account di accesso sui quali viene eseguito il mapping a certificati e account di accesso sui quali viene eseguito il mapping a chiavi asimmetriche. Quando si creano account di accesso mappati da un account di dominio di Windows, è necessario usare il nome di accesso utente precedente a Windows 2000 nel formato [<domainName>\<login_name>]. Non è possibile usare un UPN nel formato login_name@DomainName. Vedere l'esempio D più avanti in questo articolo. Gli account di accesso di autenticazione sono di tipo sysname e devono essere conformi alle regole per gli identificatori e non possono contenere un '\'. Gli account di accesso di Windows possono contenere un simbolo "\". I nomi degli account di accesso basati su utenti di Active Directory devono avere un numero di caratteri inferiore a 21.

PASSWORD ='password'

Si applica solo agli account di accesso SQL Server. Specifica la password per l'account di accesso che viene creato. Usare una password complessa. Per altre informazioni, vedere Password complesse e Criteri password. 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.

Per le password viene fatta distinzione tra maiuscole e minuscole. Le password devono essere sempre lunghe almeno otto caratteri e non possono superare i 128 caratteri. Le password possono includere i caratteri a-z, A-Z, 0-9 e la maggior parte dei caratteri non alfanumerici. Le password non possono contenere virgolette singole o il login_name.

MUST_CHANGE

Si applica solo agli account di accesso SQL Server. Se questa opzione è inclusa, in SQL Server viene richiesto all'utente di immettere una nuova password al primo uso del nuovo account di accesso.

CHECK_EXPIRATION = { ON | OFF }

Si applica solo agli account di accesso SQL Server. Specifica se i criteri di scadenza delle password devono essere applicati a questo account di accesso. Il valore predefinito è OFF.

CHECK_POLICY = { ON | OFF }

Si applica solo agli account di accesso SQL Server. Specifica che i criteri password di Windows del computer in cui è in esecuzione SQL Server devono essere applicati a questo account di accesso. Il valore predefinito è ON.

Se i criteri di Windows richiedono password complesse, queste devono contenere almeno tre dei quattro caratteri seguenti:

  • Un carattere maiuscolo (A-Z).
  • Un carattere minuscolo (a-z)
  • Una cifra (0-9).
  • Uno dei caratteri non alfanumerici, ad esempio uno spazio, _, @, *, ^, %, !, $, #, #o &.

WINDOWS

Specifica che è stato eseguito il mapping dell'account di accesso a un account di accesso di Windows.

Osservazioni:

  • Per le password viene fatta distinzione tra maiuscole e minuscole.
  • Se si specifica MUST_CHANGE, è necessario impostare CHECK_EXPIRATION e CHECK_POLICY su ON. In caso contrario, l'istruzione non verrà eseguita correttamente.
  • Non è supportata una combinazione di CHECK_POLICY = OFF e CHECK_EXPIRATION = ON.
  • Quando l'opzione CHECK_POLICY è impostata su OFF, il valore di lockout_time viene reimpostato e l'opzione CHECK_EXPIRATION viene impostata su OFF.

Importante

CHECK_EXPIRATION e CHECK_POLICY vengono applicati solo in Windows Server 2003 e versioni successive. Per ulteriori informazioni, vedere Password Policy.

Autorizzazioni

Solo gli utenti con autorizzazione ALTER ANY LOGIN per il server o appartenenza al ruolo predefinito del server securityadmin possono creare account di accesso. Per altre informazioni, vedere Ruoli a livello di server e ALTER SERVER ROLE.

Dopo la creazione di un account di accesso

Non appena viene creato, l'account di accesso può connettersi ad Azure Synapse Analytics ma ha solo le autorizzazioni concesse al ruolo public. Provare a eseguire alcune delle attività seguenti.

  • Per connettersi a un database, creare un utente del database per l'account di accesso. Per altre informazioni, vedere CREATE USER.
  • Creare un ruolo del server definito dall'utente tramite CREATE SERVER ROLE. Usare ALTER SERVER ROLE ... ADD MEMBER per aggiungere il nuovo account di accesso al ruolo del server definito dall'utente. Per altre informazioni, vedere CREATE SERVER ROLE e ALTER SERVER ROLE.
  • Usare sp_addsrvrolemember per aggiungere l'account di accesso a un ruolo predefinito del server. Per altre informazioni, vedere Ruoli a livello di Server e sp_addsrvrolemember.
  • Usare l'istruzione GRANT per concedere le autorizzazioni a livello di server al nuovo account di accesso o a un ruolo in cui esso è contenuto. Per altre informazioni, vedere GRANT.

Esempi

G. Creare un account di accesso per l'autenticazione di SQL Server con una password

Nell'esempio seguente viene creato l'account di accesso Mary7 con la password A2c3456.

CREATE LOGIN Mary7 WITH PASSWORD = 'A2c3456$#' ;

H. Usa opzioni

Nell'esempio seguente viene creato l'account di accesso Mary8 con password e alcuni degli argomenti facoltativi.

CREATE LOGIN Mary8 WITH PASSWORD = 'A2c3456$#' MUST_CHANGE,
CHECK_EXPIRATION = ON,
CHECK_POLICY = ON;

I. Creare un account di accesso da un account di dominio di Windows

Nell'esempio seguente viene creato un account di accesso da un account di dominio di Windows denominato Mary nel dominio Contoso.

CREATE LOGIN [Contoso\Mary] FROM WINDOWS;
GO