ALTER LOGIN (Transact-SQL)

Modifica le proprietà di un account di accesso di SQL Server.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

ALTER LOGIN login_name 
    { 
    <status_option> 
    | WITH <set_option> [ ,... ]
    | <cryptographic_credential_option>
    } 

<status_option> ::=
        ENABLE | DISABLE

<set_option> ::=            
    PASSWORD = 'password' | hashed_password HASHED
    [ 
      OLD_PASSWORD = 'oldpassword'
      | <password_option> [<password_option> ] 
    ]
    | DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language
    | NAME = login_name
    | CHECK_POLICY = { ON | OFF }
    | CHECK_EXPIRATION = { ON | OFF }
    | CREDENTIAL = credential_name
    | NO CREDENTIAL
 
<password_option> ::= 
    MUST_CHANGE | UNLOCK
<cryptographic_credentials_option> ::= 
         ADD CREDENTIAL credential_name
          | DROP CREDENTIAL credential_name

Argomenti

  • login_name
    Specifica il nome dell'account di accesso SQL Server che si desidera modificare. Gli account di accesso per il dominio devono essere racchiusi tra parentesi nel formato [domain\user].

  • ENABLE | DISABLE
    Attiva o disabilita l'account di accesso.

  • PASSWORD ='password'
    Si applica solo agli account di accesso di SQL Server. Specifica la password per l'account di accesso che viene modificato. Per le password viene fatta distinzione tra maiuscole e minuscole.

  • 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, sulla password viene eseguito l'hashing prima che venga archiviata nel database. Questa opzione deve essere utilizzata solo per la sincronizzazione degli account di accesso tra due server Non utilizzare l'opzione HASHED per modificare regolarmente le password.

    Nota

    Questo argomento funziona solo con hash generati da SQL Server 2000 o versioni successive.

  • OLD_PASSWORD ='oldpassword'
    Si applica solo agli account di accesso di SQL Server. Password corrente dell'account di accesso a cui verrà assegnata una nuova password. Per le password viene fatta distinzione tra maiuscole e minuscole.

  • MUST_CHANGE
    Si applica solo agli account di accesso di SQL Server. Se si include questa opzione, SQL Server richiederà una password aggiornata al primo utilizzo dell'account di accesso modificato.

  • DEFAULT_DATABASE **=**database
    Specifica un database predefinito da assegnare all'account di accesso.

  • DEFAULT_LANGUAGE **=**language
    Specifica una lingua predefinita da assegnare all'account di accesso.

  • NAME = login_name
    Nuovo nome dell'account di accesso che viene rinominato. Se si tratta di un account di accesso di Windows, il SID dell'entità di Windows corrispondente al nuovo nome deve corrispondere al SID associato all'account di accesso in SQL Server. Il nuovo nome di un account di accesso di SQL Server non può contenere una barra rovesciata (\).

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

  • CREDENTIAL = credential_name
    Nome della credenziale da mappare all'account di accesso di SQL Server. La credenziale deve esistere nel database corrente. Per ulteriori informazioni, vedere Credenziali (Motore di database). Non è possibile mappare una credenziale all'account di accesso di sa.

  • NO CREDENTIAL
    Rimuove gli eventuali mapping esistenti tra l'account di accesso e una credenziale del server. Per ulteriori informazioni, vedere Credenziali (Motore di database).

  • UNLOCK
    Si applica solo agli account di accesso di SQL Server. Specifica che un account di accesso bloccato deve essere sbloccato.

  • ADD CREDENTIAL
    Aggiunge una credenziale del provider EKM per l'account di accesso. Per ulteriori informazioni, vedere Informazioni su Extensible Key Management (EKM).

  • DROP CREDENTIAL
    Rimuove una credenziale del provider EKM per l'account di accesso. Per ulteriori informazioni, vedere Informazioni su Extensible Key Management (EKM).

Osservazioni

Quando CHECK_POLICY è impostato su ON, non è possibile utilizzare l'argomento HASHED.

Quando si modifica l'opzione CHECK_POLICY impostandola su ON, si ottengono le conseguenze seguenti:

  • Anche l'opzione CHECK_EXPIRATION viene impostata su ON, a meno che non sia impostata su OFF in modo esplicito.

  • La cronologia delle password viene inizializzata con il valore dell'hash della password corrente.

Quando si modifica l'opzione CHECK_POLICY impostandola su OFF, si ottengono le conseguenze seguenti:

  • Anche l'opzione CHECK_EXPIRATION viene impostata su OFF.

  • Viene cancellata la cronologia delle password.

  • Viene reimpostato il valore di lockout_time.

Se si specifica MUST_CHANGE, le opzioni CHECK_EXPIRATION e CHECK_POLICY devono essere impostate su ON. In caso contrario, l'istruzione non riesce.

Se l'opzione CHECK_POLICY è impostata su OFF, non è possibile impostare CHECK_EXPIRATION su ON. Un'istruzione ALTER LOGIN che presenta questa combinazione di opzioni non potrà essere eseguita correttamente.

Nota importanteImportante

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

Nota importanteImportante

Un problema noto in Windows Server 2003 può impedire la reimpostazione del conteggio delle password errate dopo il raggiungimento della soglia di blocchi dell'account. Ciò potrebbe causare il blocco immediato nei successivi tentativi di accesso non riusciti. È possibile reimpostare il conteggio delle password errate in modo manuale impostando l'opzione CHECK_POLICY = OFF, e reimpostando subito dopo CHECK_POLICY = ON. Per ulteriori informazioni sulla soglia di blocchi dell'account, vedere l'articolo 818078 della Microsoft Knowledge Base: L'Account utente può venire bloccato prematuramente.

Non è possibile utilizzare ALTER_LOGIN con l'argomento DISABLE per negare l'accesso a un gruppo di Windows. Ad esempio, ALTER_LOGIN [domain\group] DISABLE restituirà il messaggio di errore seguente:

"Messaggio 15151, livello 16, stato 1, riga 1"

"Impossibile modificare l'oggetto account di accesso di tipo 'Domain\Group', perché inesistente o perché non si dispone dell'autorizzazione".

Tale comportamento è stato definito in fase di progettazione.

Autorizzazioni

È richiesta l'autorizzazione ALTER ANY LOGIN.

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

Se l'account di accesso da modificare è un membro del ruolo predefinito del server sysadmin o un utente che dispone dell'autorizzazione CONTROL SERVER, è richiesta anche l'autorizzazione CONTROL SERVER quando si apportano le modifiche seguenti:

  • Reimpostazione della password senza specificare la vecchia password.

  • Attivazione di MUST_CHANGE, CHECK_POLICY o CHECK_EXPIRATION.

  • Modifica del nome dell'account di accesso.

  • Attivazione o disabilitazione dell'account di accesso.

  • Mapping dell'account di accesso a una diversa credenziale.

Un'entità può modificare la password, la lingua predefinita e il database predefinito per il proprio account di accesso.

Esempi

A. Attivazione di un account di accesso disabilitato

Nell'esempio seguente viene attivato l'account di accesso Mary5.

ALTER LOGIN Mary5 ENABLE;

B. Modifica della password di un account di accesso

Nell'esempio seguente viene modificata la password dell'account di accesso Mary5 in una password complessa.

ALTER LOGIN Mary5 WITH PASSWORD = '<enterStrongPasswordHere>';

C. Modifica del nome di un account di accesso

Nell'esempio seguente viene modificato il nome dell'account di accesso Mary5 in John2.

ALTER LOGIN Mary5 WITH NAME = John2;

D. Mapping tra un account di accesso e una credenziale

Nell'esempio seguente l'account di accesso John2 viene mappato alla credenziale Custodian04.

ALTER LOGIN John2 WITH CREDENTIAL = Custodian04;

E. Mapping di un account di accesso a una credenziale EKM

Nell'esempio seguente l'account di accesso Mary5 viene mappato alla credenziale EKM EKMProvider1.

ALTER LOGIN Mary5
ADD CREDENTIAL EKMProvider1;
GO

F. Sblocco di un account di accesso

Per sbloccare un account di accesso di SQL Server, eseguire l'istruzione seguente, sostituendo **** con la password dell'account desiderata.

ALTER LOGIN [Mary5] WITH PASSWORD = '****' UNLOCK ;
GO

Per sbloccare un account di accesso senza modificare la password, disattivare i criteri di controllo, quindi attivarli nuovamente.

ALTER LOGIN [Mary5] WITH CHECK_POLICY = OFF;
ALTER LOGIN [Mary5] WITH CHECK_POLICY = ON;
GO

G. Modifica della password di un account di accesso mediante HASHED

Nell'esempio seguente viene modificata la password dell'account di accesso TestUser con un valore di cui è già stato eseguito l'hashing.

ALTER LOGIN TestUser WITH 
PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;
GO