CREATE LOGIN (Transact-SQL)

Crea un nuovo account di accesso di SQL Server.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

CREATE LOGIN loginName { 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

Argomenti

  • loginName
    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 mappati a certificati e account di accesso mappati a chiavi asimmetriche. Quando si creano account di accesso mappati da un account di dominio di Windows, è necessario utilizzare il nome di accesso utente precedente a Windows 2000, nel formato [<domainName>\<loginName>]. Non è possibile utilizzare un nome UPN nel formato loginName@DomainName. Vedere l'esempio D di seguito in questo argomento.

  • 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.

  • 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 è già stato eseguito l'hashing per la password immessa dopo l'argomento PASSWORD. Se questa opzione non è selezionata, viene generato l'hash della stringa immessa come password prima che questa 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.

  • 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 da mappare al nuovo account di accesso di SQL Server. La credenziale deve esistere nel server. Attualmente questa opzione consente solo di connettere la credenziale a un account di accesso. Questa opzione potrebbe venire estesa in una versione futura di SQL Server.

  • 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 imposti in 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 delle password di Windows del computer in cui è in esecuzione SQL Server devono essere imposti per questo account di accesso. Il valore predefinito è ON.

  • WINDOWS
    Specifica che l'account di accesso deve essere mappato 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 verrà eseguita correttamente.

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.

Autorizzazioni

È richiesta l'autorizzazione ALTER ANY LOGIN o ALTER LOGIN per il server.

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

Esempi

A. Creazione di un account di accesso con una password

Nell'esempio seguente viene creato un account di accesso per un ID 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 <loginName> WITH PASSWORD = '<enterStrongPasswordHere>' MUST_CHANGE;
GO

B. Creazione di un account di accesso mappato a una credenziale

Nell'esempio seguente viene creato l'account di accesso per utente specifico, utilizzando il relativo ID. Questo account di accesso viene mappato alla credenziale.

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

C. Creazione di un account di accesso da un certificato

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

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

D. Creazione di 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.

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