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 viene modificato. Gli account di accesso per il dominio devono essere racchiusi tra parentesi nel formato [domain\user].

  • ENABLE | DISABLE
    Abilita 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 si include questa opzione, viene eseguito l'hashing della password prima che questa 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 le normali operazioni di modifica delle password.

    [!NOTA]

    È possibile utilizzare questo argomento 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 applicati a questo account di accesso. L'impostazione predefinita è 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 applicati a questo account di accesso. L'impostazione predefinita è 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).

  • 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 (Extensible Key Management) per l'account di accesso. Per ulteriori informazioni, vedere Informazioni su Extensible Key Management (EKM).

  • DROP CREDENTIAL
    Rimuove una credenziale del provider EKM (Extensible Key Management) 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 verifica il comportamento seguente:

  • Anche l'opzione CHECK_EXPIRATION viene impostata su ON, a meno che non sia stata 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 verifica il comportamento seguente:

  • 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 avrà esito negativo.

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 avrà esito negativo.

Nota importanteImportante

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

Nota importanteImportante

Un problema noto in Windows Server 2003 potrebbe impedire la reimpostazione del conteggio delle password errate dopo il raggiungimento della soglia di blocchi dell'account. Ciò potrebbe causare il blocco immediato ai 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 relativo alla possibilità di blocco prematuro dell'account utente.

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

Questo si verifica per motivi strutturali.

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.

  • Abilitazione di MUST_CHANGE, CHECK_POLICY o CHECK_EXPIRATION.

  • Modifica del nome dell'account di accesso.

  • Abilitazione o disabilitazione dell'account di accesso.

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

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

Esempi

A. Abilitazione di un account di accesso disabilitato

Nell'esempio seguente viene abilitato 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 desiderato.

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

Per sbloccare un account di accesso senza modificare la password, disattivare il criterio di controllo, quindi attivarlo 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