Transferir el login y la contraseña (inicios de sesión) es una de las tareas fundamentales a la hora de hacer:

  • Migraciones entre equipos.
  • Mover bases de datos de una instancia a otra.
  • Log Shipping ( trasvase de registros).
  • AlwaysOn availability groups.
  • Database Mirroring.

Cuando queremos transferir un login entre instancias de SQL Server, si conocemos la contraseña podríamos crear el login en el nuevo equipo mediante la ventana del Management Studio o T-SQL. Pero este procedimiento tiene el problema de que cuando se mueve o se copia una base de datos a una instancia diferente, se generan usuarios huérfanos en las bases de datos . Esto ocurre porque al crear el nuevo login no tiene el mismo SID. Por lo tanto, además de transferir la contraseña, normalmente queremos que el nuevo login tenga el mismo SID y evitar este problema dentro de la base de datos destino.

Aunque habitualmente son iguales, no es necesario que el nombre del login(servidor) y el nombre del usuario (base de datos) sean iguales ya que la relación es mediante el SID.

Si un usuario de una base de datos no autocontenida, no tiene relación con un login el usuario queda huérfano. Este problema solo ocurre si es un usuario con login de SQL.

Podemos verificar si contienen el mismo SID con las siguientes consultas.

--Indicar el nombre correcto de la base de datos
use PerformanceDb; 
go

select SID from sys.sql_logins where name = 'Mariano'
select SID from sys.sysusers   where name = 'Mariano'

Como Podemos ver ambos registros tienen el mismo SID.

Relación Login User

Relación Login User

Solución

En la base de conocimiento de Microsoft existen dos artículos que describen los pasos y los detalles a tener en cuenta para realizar esta tarea. Se deberá seleccionar el que corresponda dependiendo de la versión de SQL Server de origen.
El procedimiento consiste en:

  1. Crear los procedimientos almacenados sp_hexadecimal y sp_help_revlogin en el equipo origen.
  2. Ejecutar el procedimiento sp_help_revlogin que genera el script T-SQL de creación de logins con los mismos SID y contraseña.
  3. Copiar el resultado en el equipo de destino.
  4. Ejecutar solo la generación de los logins que se precisan.

Cómo transferir inicios de sesión y contraseñas entre servidores SQL Server

https://support.microsoft.com/es-es/help/246133/how-to-transfer-logins-and-passwords-between-instances-of-sql-server

En este artículo se describe cómo transferir los inicios de sesión y las contraseñas a un nuevo servidor. El método explicado en el documento se aplica cuando:

  • Transfiere inicios de sesión y contraseñas de SQL Server 7.0 a SQL Server 7.0.
  • Transfiere inicios de sesión y contraseñas de SQL Server 7.0 a SQL Server 2000.
  • Transfiere inicios de sesión y contraseñas de SQL Server 7.0 a SQL Server 2005.
  • Transfiere inicios de sesión y contraseñas entre servidores que ejecutan SQL Server 2000.
  • Transfiere inicios de sesión y contraseñas de SQL Server 2000 a SQL Server 2005.

Cómo transferir inicios de sesión y contraseñas entre instancias de SQL Server 2005 y 2008

https://support.microsoft.com/es-es/help/918992/how-to-transfer-logins-and-passwords-between-instances-of-sql-server

Este artículo describe cómo transferir los inicios de sesión y las contraseñas entre instancias de Microsoft SQL Server 2005 y Microsoft SQL Server 2008 o posteriores.


Dejá un comentario

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