Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Iscriviti oggi stessoQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
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.
Nella riga seguente selezionare il nome del prodotto a cui si è interessati. Verranno visualizzate solo le informazioni per tale prodotto.
* SQL Server *
-- 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
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.
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.
Si applica solo alla parola chiave HASHED. Specifica il valore hash della password per l'account di accesso in fase di creazione.
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.
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.
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).
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
.
Specifica il database predefinito da assegnare all'account di accesso. Se questa opzione non è inclusa, il database predefinito è impostato su master
.
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.
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.
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:
Specifica che è stato eseguito il mapping dell'account di accesso a un account di accesso di Windows.
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
Specifica il nome di un certificato da associare all'account di accesso. Questo certificato deve essere già presente nel master
database.
Specifica il nome di una chiave asimmetrica da associare all'account di accesso. Questa chiave deve essere già presente nel master
database.
MUST_CHANGE
è specificato, CHECK_EXPIRATION e CHECK_POLICY devono essere impostati su ON
. In caso contrario, l'istruzione non verrà eseguita correttamente.CHECK_POLICY = OFF
e CHECK_EXPIRATION = ON
non è supportata.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.
master
.È richiesta l'autorizzazione CREATE LOGIN per il server o l'appartenenza al ruolo predefinito del server ##MS_LoginManager## .
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.
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.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.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
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.
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
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
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
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
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 ;
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 statement 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;
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
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
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
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 *
Per altre informazioni sulla connettività e l'autorizzazione per database SQL di Azure, vedere:
-- 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 ]
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.
Specifica che l'account di accesso è per l'autenticazione di Microsoft Entra.
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.
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.
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
.
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.
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.
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.
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
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
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
È 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='aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb';
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 *
-- 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
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.
Specifica che l'account di accesso è per l'autenticazione di Microsoft Entra.
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.
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.
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
.
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.
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.
È 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.
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.
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.
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:
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>;
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
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
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
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
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
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
Per controllare i nuovi account di accesso aggiunti, eseguire il comando T-SQL seguente:
SELECT *
FROM sys.server_principals;
GO
* Azure Synapse
Analytics *
-- Syntax for Azure Synapse Analytics
CREATE LOGIN login_name
{
FROM EXTERNAL PROVIDER
| WITH <option_list> [,..]
}
<option_list> ::=
PASSWORD = { 'password' }
[ , SID = sid ]
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.
Specifica che l'account di accesso è per l'autenticazione di Microsoft Entra.
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 .
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.
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
.
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.
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.
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.
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
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) *
-- 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}
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.
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.
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.
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.
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:
Specifica che è stato eseguito il mapping dell'account di accesso a un account di accesso di Windows.
Importante
CHECK_EXPIRATION e CHECK_POLICY vengono applicati solo in Windows Server 2003 e versioni successive. Per ulteriori informazioni, vedere Password Policy.
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.
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.
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.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.Nell'esempio seguente viene creato l'account di accesso Mary7
con la password A2c3456
.
CREATE LOGIN Mary7 WITH PASSWORD = 'A2c3456$#' ;
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;
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
Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Iscriviti oggi stesso