EXEC sp_change_users_login SQL SERVER

EXEC sp_change_users_login SQL SERVER

Exec sp_change_users_login 'Auto_Fix', '<USUARIO>' en SQL Server se utiliza para resolver problemas de desincronización entre un Login y un User en una base de datos.

Contexto

En SQL Server, un Login es la cuenta a nivel de servidor que se utiliza para autenticarse en SQL Server, mientras que un User es la cuenta a nivel de base de datos asociada con un Login. Cada usuario de una base de datos está vinculado a un Login mediante un SID (Security Identifier). Sin embargo, a veces el vínculo entre un Login y un User se pierde o se desincroniza, lo que puede ocurrir si, por ejemplo, restauras una base de datos en un servidor diferente o después de cambios de configuración.

Lo que hace el comando

  • sp_change_users_login 'Auto_Fix': Este procedimiento almacenado se utiliza para corregir la desincronización entre el Login y el User.
  • 'Contabilidad': Especifica el nombre del usuario a nivel de base de datos que intentas arreglar.

Cuando ejecutas sp_change_users_login 'Auto_Fix', 'Contabilidad', SQL Server hace lo siguiente:

  1. Busca un Login con el mismo nombre que el usuario de la base de datos (‘Contabilidad’ en este caso).
  2. Si encuentra un Login con el mismo nombre:
    • SQL Server asocia automáticamente el User (‘Contabilidad’) con el Login que tiene el mismo nombre.
    • El SID del User se actualiza para coincidir con el SID del Login, reparando la desincronización.
  3. Si no encuentra un Login con el mismo nombre:
    • No se realiza ninguna acción.

Ejemplo de Uso

Este comando es particularmente útil en situaciones como:

  • Restauración de una base de datos en un servidor diferente: Donde los SIDs del User y Login podrían no coincidir.
  • Migración de Logins y Usuarios: Cuando se han creado Logins o Usuarios nuevos que no están vinculados correctamente.

Recomendaciones

  • Verificar Antes de Usar: Antes de usar Auto_Fix, asegúrate de que efectivamente el Login y el User deberían estar vinculados. No es recomendable utilizar este comando sin verificar, ya que puede asociar incorrectamente un User a un Login equivocado si simplemente coinciden en nombre.
  • Alternativas: Si deseas más control, podrías usar sp_change_users_login con la opción 'Update_One' para asociar manualmente un Login específico con un User.

Uso del Comando EXEC sp_change_users_login en SQL Server Después de una Migración

Cuando se realiza una migración de bases de datos en SQL Server, es común encontrarse con un problema relacionado con la desconexión entre los usuarios de la base de datos y los inicios de sesión (logins) en el servidor. Este desajuste ocurre debido a que los inicios de sesión (a nivel del servidor) y los usuarios (a nivel de la base de datos) están vinculados por un identificador de seguridad (SID). Si durante la migración estos SIDs no coinciden, los usuarios pueden experimentar problemas de acceso, incluso si parecen estar correctamente configurados.

Aquí es donde el comando EXEC sp_change_users_login resulta invaluable.

¿Qué es sp_change_users_login?

El procedimiento almacenado sp_change_users_login se utiliza para solucionar los problemas de desconexión entre los usuarios y los inicios de sesión en SQL Server. Su función principal es reparar estas desconexiones asociando de nuevo un usuario de base de datos con su correspondiente inicio de sesión.

Sintaxis Básica

EXEC sp_change_users_login 'Auto_Fix', 'nombre_usuario', NULL, 'nueva_contraseña';

Parámetros:

  • ‘Auto_Fix’: Indica que se debe intentar reparar la relación entre el usuario y el inicio de sesión automáticamente. Si no existe un inicio de sesión correspondiente, lo creará.
  • ‘nombre_usuario’: Especifica el nombre del usuario de la base de datos que se desea asociar con un inicio de sesión.
  • ‘nueva_contraseña’ (opcional): Define una nueva contraseña para el inicio de sesión si se crea uno nuevo.

Ejemplo de Uso Después de una Migración

Supongamos que migraste una base de datos llamada MiBaseDeDatos desde un servidor ServidorA a un nuevo servidor ServidorB. Después de la migración, los usuarios de la base de datos en ServidorB podrían estar desconectados de sus inicios de sesión. Para resolver esto, puedes usar el siguiente comando:

USE MiBaseDeDatos;
GO
EXEC sp_change_users_login 'Auto_Fix', 'usuario1';

Este comando intentará asociar al usuario usuario1 con su correspondiente inicio de sesión en el servidor. Si el inicio de sesión no existe, se puede crear automáticamente y puedes especificar una nueva contraseña, si es necesario.

¿Cuándo Deberías Usar sp_change_users_login?

  • Después de una Migración: Como se mencionó, este es el uso más común. Cuando se migra una base de datos a un nuevo servidor, los usuarios y los inicios de sesión pueden estar desconectados.
  • Restauración de Base de Datos: También es útil después de restaurar una base de datos en un servidor diferente al original.
  • Consolidación de Servidores: Si estás consolidando varias bases de datos en un solo servidor, sp_change_users_login puede ayudar a mantener la coherencia entre usuarios y logins.

Consideraciones Adicionales

Es importante destacar que sp_change_users_login está marcado como obsoleto en versiones futuras de SQL Server. Microsoft recomienda utilizar comandos como ALTER USER junto con la opción WITH LOGIN para manejar este tipo de situaciones en versiones más recientes.

En resumen, este comando es una herramienta útil para resolver problemas de desincronización entre Logins y Users, pero debe usarse con cuidado para evitar errores en la asociación de cuentas.

Cuentos de miedo para Informáticos: Historias de terror para informáticos

Auditoría descubriendo las Conexiones en SQL Server

Bloqueo procedimiento por un Blk By en SQL server

Para que una tabla tenga FULLTEXT SQL

¿Es Necesario Hacer un Refresco de una Vista en SQL Server?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.

error: Contenido protegido :)