ALTER LOGIN (Transact-SQL)
Modifica le proprietà di un account di accesso di SQL Server.
Convenzioni 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
Abilita o disabilita questo account di accesso. La disabilitazione di un account di accesso non influisce sul comportamento degli account di accesso già connessi. Gli account di accesso disabilitati conservano le autorizzazioni e possono essere ancora rappresentati.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 viene selezionata, l'hashing della password viene eseguito prima che questa venga archiviata nel database. Tale 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.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 su cui eseguire il mapping all'account di accesso di SQL Server. La credenziale deve già esistere nel server. Per ulteriori informazioni, vedere Credenziali (Motore di database). Non è possibile eseguire il mapping di una credenziale all'account di accesso 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 Extensible Key Management (EKM).DROP CREDENTIAL
Rimuove una credenziale del provider EKM per l'account di accesso. Per ulteriori informazioni, vedere 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:
- 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 avrà esito negativo.
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.
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.Abilitazione 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 sull'account di accesso John2 viene eseguito il mapping alla credenziale Custodian04.
ALTER LOGIN John2 WITH CREDENTIAL = Custodian04;
E.Mapping di un account di accesso a una credenziale EKM
Nell'esempio seguente sull'account di accesso Mary5 viene eseguito il mapping 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, disabilitare 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
Vedere anche
Riferimento
CREATE CREDENTIAL (Transact-SQL)