
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:
- Busca un
Login
con el mismo nombre que el usuario de la base de datos (‘Contabilidad’ en este caso). - 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 elSID
del Login, reparando la desincronización.
- 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 elLogin
y elUser
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 unLogin
específico con unUser
.
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