Daniel Calbimonte

Cómo migrar los inicios de sesión de una base de datos a un servidor diferente

December 4, 2015 by

A veces, es necesario mover la base de datos de un servidor a otro. El problema es que usualmente los inicios de sesión y los usuarios de la base de datos son mapeados. Si este es el caso, cuando usted respalda una Base de Datos y restaura una base de dato en otro servidor, los inicios de sesión se pierden. En este artículo, mostraremos diferentes alternativas para resolver este problema.

Mostraremos cuatro alternativas para resolver los problemas de los inicios de sesión.

  1. Las bases de datos contenidas
  2. SSIS Transfer Login Task
  3. El Asistente de Migración de Base de Datos
  4. Los scripts Microsoft

Las bases de datos Contenidas

SQL Server 2008 y posteriores introdujeron la característica de Bases de Datos Contenidas, usted no necesita iniciar sesión para conectarse a una base de datos. Usted puede usar el usuario de la Base de Datos para conectarse a su base de datos directamente.

Por defecto, esta característica no está habilitada. En SQL Server Management Studio (SSMS), haga clic derecho en Server Properties, vaya a la página Advanced y establezca Enable Contained Databases a True.

Figure 1

En la base de datos que desea migrara, usted también necesita hacer clic derecho, vaya a la página Options y seleccione Partial en la propiedad Containment type. Esta opción permitirá trabajar con los inicios de sesión y usuarios contenidos.

Figure 2

Una vez habilitado usted puede crear nuevos usuarios.

Figure 3

Esta característica usa Cuentas SQL, así que si no está configurada en Server Properties, seleccione el modo SQL Server and Windows Authentication en la página Security en los servidores de fuente y destino.

Figure 4

Esta característica requiere que reinicie el Servicio SQL Server en los servidores fuente y destino.

Figure 5

Esta característica requiere que reinicie el Servicio SQL Server en los servidores fuente y destino.

Figure 6

Para probar esta característica, respalde su base de datos fuente.

Figure 7

Restaure la copia de seguridad de la base de datos en el servidor destino.

Figure 8

Ahora intente conectarse usando el usuario creado en la base de datos fuente. Para este propósito, selección SQL Server Authentication, provea el nombre de usuario y la contraseña y presiona el botón Options.

Para probar, intente conectarse a SQL Server usando el usuario de la base de datos SQL Server.

Figure 9

Conéctese usando la información del usuario de la base de datos SQL Server.

Figure 10

Escriba manualmente el nombre de la Base de Datos a la que se conectará, retorne a la pestaña de inicio de sesión y presiones Connect.

Figure 11

Si todo está bien, usted podrá acceder a la base de datos usando un Usuario de la Base de Datos SQL Server.

Figure 12

SSIS Transfer Logic Task

La segunda alternativa es usar una tarea en SSIS. Esto puede ser útil y recomendado si usted ya tiene una base de datos y es muy tarde para usar bases de datos contenidas. Adicionalmente, es muy útil cuando usted necesita personalizar la Migración de la Base de Datos. Si usted no tiene ninguna experiencia con SSIS no se preocupe. Este tutorial es para principiantes.

Para iniciar, abra SQL Server Data Tools.

Figure 13

Vaya a File New Project y seleccione Integration Services Project.

Figure 14

Arrastre y suelte Transfer Logins Task al panel de gráficos.

Figure 15

Escriba valores válidos en Source y Destination Connections para seleccionar la opción LoginToTransfer. Usted puede soltar los inicios de sesión si existen, ignorarlos o saltarlos. Usted también puede copiar los Sids desde la base de datos fuente.

Figure 16

Seleccione los inicios de sesión que desea migrar a la base de datos destino.

Figure 17

Ejecute el paquete. Si todo está bien, usted tendrá los inicios de sesión copiados. Por defecto, os inicios de sesión SQL Server están deshabilitados y las contraseñas están cambiadas. Usted necesitará habilitar y establecer nuevas contraseñas usando Sentencias T-SQL.

Figure 18

El Asistente de Copia de Base de Datos

El Asistente de Copia de Base de Datos es una alternativa a copiar los inicios de sesión muy similar a SSIS Transfer Login Task. La principal ventaja es que copia la base de datos y los inicios de sesión. La desventaja es que es menos personalizable que la opción SSIS.

Para iniciar en SSMS, haga clic derecho en la base de datos para migrar y seleccione Tasks > Copy Database.

Figure 19

Un asistente será mostrado. Presione Next.

Figure 20

Especifique el Source Server.

Figure 21

Especifique el Destination Server.

Figure 22

Usted puede copiar la base de datos, usando las opciones Detach y Attach lo cual es la opción más rápida o usar el método de SQL Management Object el cual es más lento, pero mantiene la base de datos fuente en línea en todo el proceso de migración.

Figure 23

Usted puede copiar o mover una o múltiples bases de datos con esta opción.

Figure 24

Usted también puede especificar la Carpeta de destino.

Figure 25

Presione en los inicios de sesión seleccionados por los usuarios para seleccionar los inicios de sesión a copiar.

Figure 26

Usted puede copiar todos los inicios de sesión o seleccionarlos individualmente.

Figure 27

El asistente creará un paquete y el evento relacionado será guardado en el registro de eventos de Windows.

Figure 28

Usted puede correr el asistente de copia de base de datos inmediatamente o programarlo para correr en una fecha y hora específicas. Por defecto, la tarea será ejecutada usando la Cuenta SQL Server Agent Service. Esta cuenta de servicios no tiene privilegios entre Servidores. Usted necesitará crear una cuenta proxy para hacerla funcionar. Para crear una cuenta Proxy, usted requerirá una credencial y una cuenta Proxy. Para más información acerca de cuentas proxy para SSIS, consulte este enlace.

Figure 29

Si todo está bien, usted podrá ver la tarea. Asegúrese de que Agent Service está habilitado e iniciado.

Figure 30

Si usted selecciona los pasos de la tarea, usted notará que internamente el asistente de copia de base de datos crea un paquete en SSIS.

Figure 31

Por defecto, los inicios de sesión copiados no están deshabilitados como con SSIS Transfer Login Task, pero los inicios de sesión SQL Server requieren una nueva contraseña para entrar.

Figure 32

Los Scripts Microsoft

La última opción no es nada amigable, pero es una buena alternativa para SQL Server 2008 o versiones más antiguas. SI usted tiene SQL 2012 o versiones posteriores, es mejor de usar que las otras alternativas.

Para SQL 2008 o versiones más antiguas, esta alternativa recupera la contraseña, pero en SQL 2012 o posteriores, las contraseñas no pueden ser recuperadas porque el algoritmo de encriptación fue mejorado.

Las instrucciones completas se muestran aquí.

Básicamente, usted crea procedimientos almacenados, los ejecuta y corre los scripts en el servidor apuntado.

Conclusión

En este artículo, mostramos 4 formas de migrar datos. La siguiente tabla resume cuándo usar cada método:

  1. La base de datos contenida
Si usted trabaja principalmente con muchos inicios de sesión SQL Server y necesita migrar o distribuir la base de datos múltiples veces, esta solución es lo mejor para evitar los problemas de migración.
  1. La tarea SSIS
Esta solución es recomendada si el Asistente de Copia y Migración no satisface sus necesidades y usted necesita personalizar su solución. Si usted tiene sólo Inicios de Sesión Windows, esta opción es muy simple. Si usted tiene inicios de sesión SQL, usted necesitará habilitar las cuentas y restablecer las contraseñas.
  1. El Asistente de Copia de Bases de Datos
Esta solución es muy buena especialmente si usted sólo tiene Inicios de Sesión Windows. Esta opción es recomendada si usted no tiene ninguna experiencia con SSIS.
  1. Los scripts Microsoft
Esta opción es recomendada para SQL 208 y versiones más antiguas porque recupera las contraseñas

Daniel Calbimonte
168 Views