ALTER LOGIN (Transact-SQL)

Cambia las propiedades de una cuenta de inicio de sesión de SQL Server.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • login_name
    Especifica el nombre del inicio de sesión de SQL Server que se está cambiando. Los inicios de sesión del dominio se deben incluir entre corchetes con el formato [dominio\usuario].

  • ENABLE | DISABLE
    Habilita o deshabilita este inicio de sesión.

  • PASSWORD ='password'
    Solo se aplica a inicios de sesión de SQL Server. Especifica la contraseña del inicio de sesión que se está cambiando. En las contraseñas se distingue entre mayúsculas y minúsculas.

  • PASSWORD **=**hashed_password
    Solo se aplica a la palabra clave HASHED. Especifica el valor con hash de la contraseña para el inicio de sesión que se está creando.

  • HASHED
    Solo se aplica a inicios de sesión de SQL Server. Especifica que la contraseña especificada después del argumento PASSWORD ya tiene aplicado el algoritmo hash. Si no se selecciona esta opción, se aplica un algoritmo hash a la contraseña antes de almacenarla en la base de datos. Esta opción solo se debería utilizar para la sincronización del inicio de sesión entre dos servidores. No utilice la opción HASHED para cambiar las contraseñas de forma habitual.

    [!NOTA]

    Este argumento solo funciona con los valores hash generados por SQL Server 2000 o versiones posteriores.

  • OLD_PASSWORD ='oldpassword'
    Solo se aplica a inicios de sesión de SQL Server. La contraseña actual del inicio de sesión al que se va a asignar una contraseña nueva. En las contraseñas se distingue entre mayúsculas y minúsculas.

  • MUST_CHANGE
    Solo se aplica a inicios de sesión de SQL Server. Si se incluye esta opción, SQL Server pedirá la contraseña actualizada la primera vez que se utilice el inicio de sesión modificado.

  • DEFAULT_DATABASE **=**database
    Especifica una base de datos predeterminada que debe asignarse al inicio de sesión.

  • DEFAULT_LANGUAGE **=**language
    Especifica el idioma predeterminado que debe asignarse al inicio de sesión.

  • NAME = login_name
    Especifica el nombre nuevo del inicio de sesión al que se está cambiando el nombre. Si se trata de un inicio de sesión de Windows, el SID de la entidad de seguridad de Windows correspondiente al nombre nuevo debe coincidir con el SID asociado al inicio de sesión en SQL Server. El nombre nuevo de un inicio de sesión de SQL Server no puede contener un carácter de barra diagonal inversa (\).

  • CHECK_EXPIRATION = { ON | OFF }
    Solo se aplica a inicios de sesión de SQL Server. Especifica si debe aplicarse la directiva de expiración de contraseñas en este inicio de sesión. El valor predeterminado es OFF.

  • CHECK_POLICY = { ON | OFF }
    Solo se aplica a inicios de sesión de SQL Server. Especifica que se deben aplicar las directivas de contraseñas de Windows en el equipo que ejecuta SQL Server para este inicio de sesión. El valor predeterminado es ON.

  • CREDENTIAL = credential_name
    Nombre de una credencial que debe asignarse a un inicio de sesión de SQL Server. La credencial debe existir en la base de datos. Para obtener más información, vea Credenciales (motor de base de datos).

  • NO CREDENTIAL
    Quita cualquier asignación existente del inicio de sesión a una credencial de servidor. Para obtener más información, vea Credenciales (motor de base de datos).

  • UNLOCK
    Solo se aplica a inicios de sesión de SQL Server. Especifica que un inicio de sesión bloqueado debe desbloquearse.

  • ADD CREDENTIAL
    Agrega una credencial del proveedor de Administración extensible de claves (EKM) para el inicio de sesión. Para obtener más información, vea Descripción de la Administración extensible de claves (EKM).

  • DROP CREDENTIAL
    Quita una credencial del proveedor de Administración extensible de claves (EKM) para el inicio de sesión. Para obtener más información, vea Descripción de la Administración extensible de claves (EKM).

Notas

Cuando CHECK_POLICY se establece en ON, no puede utilizarse el argumento HASHED.

Cuando el valor de CHECK_POLICY se cambia a ON, ocurre lo siguiente:

  • CHECK_EXPIRATION también se cambia a ON, a no ser que se establezca explícitamente en OFF.

  • El historial de contraseñas se inicializa con el valor del hash de contraseña actual.

Cuando el valor de CHECK_POLICY se cambia a OFF, ocurre lo siguiente:

  • La opción CHECK_EXPIRATION también se cambia a OFF.

  • Se borra el historial de contraseñas.

  • Se restablece el valor de lockout_time.

Si se especifica MUST_CHANGE, CHECK_EXPIRATION y CHECK_POLICY, deben establecerse en ON. Si no es así, la instrucción producirá un error.

Si CHECK_POLICY se establece en OFF, CHECK_EXPIRATION no puede establecerse en ON. Una instrucción ALTER LOGIN con esta combinación de opciones dará error.

Nota importanteImportante

CHECK_EXPIRATION y CHECK_POLICY solo se aplican en Windows Server 2003 y versiones posteriores. Para obtener más información, vea Directiva de contraseñas.

Nota importanteImportante

Un problema conocido de Windows Server 2003 puede impedir que el recuento de contraseñas erróneas se restablezca una vez alcanzado el umbral de bloqueo de cuentas. Esto podría causar un bloqueo inmediato de los siguientes intentos de inicio de sesión erróneos. Puede restablecer manualmente el recuento de contraseñas incorrectas; para ello, establezca CHECK_POLICY = OFF, seguido de CHECK_POLICY = ON. Para obtener más información acerca del umbral de bloqueo de cuentas, vea el artículo 818078 de Microsoft Knowledge Base acerca del bloqueo prematuro de cuentas de usuario.

No puede usar ALTER_LOGIN con el argumento DISABLE para denegar el acceso a un grupo de Windows. Por ejemplo, ALTER_LOGIN [dominio\grupo] DISABLE devolverá el siguiente mensaje de error:

"Mensaje 15151, nivel 16, estado 1, línea 1"

"No se puede modificar el inicio de sesión 'Dominio\Grupo' porque no existe o no tiene permisos."

Esto es así por cuestiones de diseño.

Permisos

Requiere el permiso ALTER ANY LOGIN.

Si se utiliza la opción CREDENTIAL, también será necesario el permiso ALTER ANY CREDENTIAL.

Si el inicio de sesión que se está cambiado es un miembro de la función fija de servidor sysadmin o tiene concedido el permiso CONTROL SERVER, también será necesario el permiso CONTROL SERVER para realizar los cambios siguientes:

  • Restablecer la contraseña sin proporcionar la antigua.

  • Habilitar MUST_CHANGE, CHECK_POLICY o CHECK_EXPIRATION.

  • Cambiar el nombre de inicio de sesión.

  • Habilitar o deshabilitar el inicio de sesión.

  • Asignar el inicio de sesión a una credencial diferente.

Una entidad de seguridad puede cambiar la contraseña, el idioma predeterminado y la base de datos predeterminada para su propio inicio de sesión.

Ejemplos

A. Habilitar un inicio de sesión deshabilitado

En el ejemplo siguiente se habilita el inicio de sesión Mary5.

ALTER LOGIN Mary5 ENABLE;

B. Cambiar la contraseña de un inicio de sesión

En el ejemplo siguiente se cambia la contraseña del inicio de sesión Mary5 a una contraseña segura.

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

C. Cambiar el nombre de un inicio de sesión

En el ejemplo siguiente se cambia el nombre del inicio de sesión Mary5 a John2.

ALTER LOGIN Mary5 WITH NAME = John2;

D. Asignar un inicio de sesión a una credencial

En el ejemplo siguiente se asigna el inicio de sesión John2 a la credencial Custodian04.

ALTER LOGIN John2 WITH CREDENTIAL = Custodian04;

E. Asignar un inicio de sesión a una credencial de Administración extensible de claves

En el ejemplo siguiente se asigna el inicio de sesión Mary5 a la credencial EKM EKMProvider1.

ALTER LOGIN Mary5
ADD CREDENTIAL EKMProvider1;
GO

F. Desbloquear un inicio de sesión

Para desbloquear un inicio de sesión de SQL Server, ejecute la instrucción siguiente, reemplazando **** con la contraseña de cuenta deseada.

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

Para desbloquear un inicio de sesión sin cambiar la contraseña, desactive la directiva de comprobación y, a continuación, inicie sesión de nuevo.

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

G. Cambiar la contraseña de un inicio de sesión utilizando HASHED

En el ejemplo siguiente se cambia la contraseña de inicio de sesión de TestUser a un valor que ya tiene aplicado hash.

ALTER LOGIN TestUser WITH 
PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;
GO