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.
- Las bases de datos contenidas
- SSIS Transfer Login Task
- El Asistente de Migración de Base de Datos
- 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.
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.
Una vez habilitado usted puede crear nuevos usuarios.
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.
Esta característica requiere que reinicie el Servicio SQL Server en los servidores fuente y destino.
Esta característica requiere que reinicie el Servicio SQL Server en los servidores fuente y destino.
Para probar esta característica, respalde su base de datos fuente.
Restaure la copia de seguridad de la base de datos en el servidor destino.
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.
Conéctese usando la información del usuario de la base de datos SQL Server.
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.
Si todo está bien, usted podrá acceder a la base de datos usando un Usuario de la Base de Datos SQL Server.
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.
Vaya a File New Project y seleccione Integration Services Project.
Arrastre y suelte Transfer Logins Task al panel de gráficos.
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.
Seleccione los inicios de sesión que desea migrar a la base de datos destino.
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.
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.
Un asistente será mostrado. Presione Next.
Especifique el Source Server.
Especifique el Destination Server.
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.
Usted puede copiar o mover una o múltiples bases de datos con esta opción.
Usted también puede especificar la Carpeta de destino.
Presione en los inicios de sesión seleccionados por los usuarios para seleccionar los inicios de sesión a copiar.
Usted puede copiar todos los inicios de sesión o seleccionarlos individualmente.
El asistente creará un paquete y el evento relacionado será guardado en el registro de eventos de Windows.
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.
Si todo está bien, usted podrá ver la tarea. Asegúrese de que Agent Service está habilitado e iniciado.
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.
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.
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:
| 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. |
| 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. |
| 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. |
| Esta opción es recomendada para SQL 208 y versiones más antiguas porque recupera las contraseñas |
- Cómo construir un cubo desde cero usando SQL Server Analysis Services (SSAS) - December 16, 2019
- Fecha de conversión de SQL - December 11, 2019
- Funciones frente a los procedimientos almacenados en SQL Server - October 14, 2019