CREATE LOGIN (Transact-SQL)

Crea un account di accesso del Motore di database per SQL Server, SQL Database di Windows Azure e SQL Server PDW.

[!NOTA]

Le opzioni di CREATE LOGIN variano per SQL Server, Database SQL e SQL Server PDW.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

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>[ ,... ] ]
    | CERTIFICATE certname
    | ASYMMETRIC KEY asym_key_name 

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

Sintassi

-- Syntax for SQL Database
CREATE LOGIN login_name { WITH <option_list3> }

<option_list3> ::= 
    PASSWORD = { 'password' }

Sintassi

-- Syntax for SQL Server PDW
CREATE LOGIN login_name { WITH <option_list4> }

< option_list4> ::= 
    PASSWORD = { 'password' } [ MUST_CHANGE ]
    [ , <option_list5> [ ,... ] ]

<option_list5> ::=  
      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 sui quali viene eseguito il mapping da un account di dominio di Windows, è necessario utilizzare il nome di accesso utente precedente a Windows 2000, nel formato [<domainName>\<login_name>]. Non è possibile utilizzare un nome UPN nel formato login_name@DomainName. Vedere l'esempio D più avanti in questo argomento. Gli account di accesso dell'autenticazione di SQL Server sono di tipo sysname e devono essere conformi alle regole per gli identificatori e non possono contenere '\'. Gli account di accesso di Windows possono contenere '\'.

  • PASSWORD ='password'
    Si applica solo agli account di accesso di SQL Server. Specifica la password per l'account di accesso che viene creato. È consigliabile utilizzare una password complessa. Per ulteriori informazioni, vedere Password complesse e Criteri password.

    Per le password viene fatta distinzione tra maiuscole e minuscole. Le password devono essere sempre composte da almeno 8 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 valore di 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.

  • HASHED
    Si applica solo agli account di accesso di SQL Server. Specifica che per la password immessa dopo l'argomento PASSWORD è già stato eseguito l'hashing. Se questa opzione non è selezionata, sulla stringa immessa come password viene eseguito l'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 utilizzare l'opzione HASHED per creare nuovi account di accesso. L'opzione HASHED non può essere utilizzata con hash creati da SQL Server 7 o versioni precedenti.

  • MUST_CHANGE
    Si applica solo agli account di accesso di SQL Server. Se questa opzione è inclusa, in SQL Server viene richiesto all'utente di immettere una nuova password al primo utilizzo 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 la connessione a un account di accesso. Non è possibile eseguire il mapping di una credenziale all'account di accesso sa.

  • SID = sid
    Si applica solo agli account di accesso di SQL Server. Specifica il GUID del nuovo account di accesso di SQL Server. Se questa opzione è inclusa, SQL Server assegna un GUID automaticamente.

  • DEFAULT_DATABASE **=**database
    Specifica il database predefinito da assegnare all'account di accesso. Se questa opzione non è inclusa, il database predefinito viene 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 di 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 di 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).

    • Un carattere non alfanumerico, ad esempio uno spazio, _, @, *, ^, %, !, $, # o &.

  • WINDOWS
    Specifica che sull'account di accesso deve essere eseguito il mapping a un account di accesso di Windows.

  • CERTIFICATE certname
    Specifica il nome di un certificato da associare a questo account di accesso. Questo certificato deve essere già presente nel database master.

  • ASYMMETRIC KEY asym_key_name
    Specifica il nome di una chiave asimmetrica da associare a questo account di accesso. Questa chiave deve essere già presente nel database master.

Osservazioni

Per le password viene fatta distinzione tra maiuscole e minuscole.

L'utilizzo di password con hashing già eseguito è supportato solo quando si creano gli account di accesso di SQL Server.

Se si specifica MUST_CHANGE, è necessario impostare CHECK_EXPIRATION e CHECK_POLICY su ON. In caso contrario, l'istruzione non riesce.

Una combinazione di CHECK_POLICY = OFF e CHECK_EXPIRATION = ON non è supportata.

Quando l'opzione CHECK_POLICY è impostata su OFF, il valore specificato in lockout_time viene reimpostato e l'opzione CHECK_EXPIRATION viene impostata su OFF.

Nota importanteImportante

CHECK_EXPIRATION e CHECK_POLICY sono imposte solo in Windows Server 2003 e versioni successive. Per ulteriori informazioni, vedere Criteri password.

Gli account di accesso creati da certificati o chiavi asimmetriche vengono utilizzati solo per la firma del codice e non possono essere utilizzati per la connessione a SQL Server. È possibile creare un account di accesso da un certificato o una chiave asimmetrica solo quando il certificato o la chiave asimmetrica esistono già nel database master.

Per uno script con cui trasferire gli account di accesso, vedere la pagina relativa alla modalità di trasferimento degli account di accesso e delle password tra istanze di SQL Server 2005 e SQL Server 2008.

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

Account di accesso al database SQL

In Database SQL l'istruzione CREATE LOGIN deve essere l'unica istruzione in un batch.

In alcuni metodi di connessione al Database SQL, ad esempio sqlcmd, è necessario aggiungere il nome del server Database SQL al nome di accesso nella stringa di connessione utilizzando la notazione <login>@<server>. Se, ad esempio, l'account di accesso è login1 e il nome completo del server Database SQL è servername.database.windows.net, il parametro username della stringa di connessione sarà 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 database master per creare un account di accesso.

Per ulteriori informazioni sugli account di accesso del Database SQL, vedere Gestione di database e account di accesso in database SQL di Windows Azure.

Autorizzazioni

In SQL Server e SQL Server PDW è necessaria l'autorizzazione ALTER ANY LOGIN nel server o l'appartenenza al ruolo predefinito del server securityadmin.

In Database SQL solo l'account di accesso dell'entità di livello server (creato dal processo di provisioning) o i membri del ruolo del database loginmanager nel database master possono creare nuovi account di accesso.

Se viene utilizzata l'opzione CREDENTIAL, è richiesta anche l'autorizzazione ALTER ANY CREDENTIAL per il server.

Passaggi successivi

Una volta creato, un account di accesso può connettersi al Motore di database, a Database SQL o a SQL Server PDW ma disporrà solo dell'autorizzazione al ruolo public. Provare a effettuare alcune delle attività seguenti:

Esempi

A. Creazione di un account di accesso con una password

Si applica a tutti gli ambienti.

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. Creazione di un account di accesso con una password

Si applica a SQL Server e SQL Server PDW.

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.

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

C. Creazione di un account di accesso sul quale viene eseguito il mapping a una credenziale

Si applica a SQL Server.

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.

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

D. Creazione di un account di accesso da un certificato

Si applica a SQL Server.

Nell'esempio seguente viene creato un account di accesso per un utente specifico da un certificato nel database master.

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. Creazione di un account di accesso da un account di dominio di Windows

Si applica a SQL Server.

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

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

Vedere anche

Riferimento

ALTER LOGIN (Transact-SQL)

DROP LOGIN (Transact-SQL)

EVENTDATA (Transact-SQL)

Concetti

Entità (Motore di database)

Criteri password

Creazione di un account di accesso