Mover bases de datos del servidor de informes a otro equipo (modo nativo de SSRS)

Se aplica al modo nativo de SQL Server Reporting Services (SSRS)

Puede mover las bases de datos del servidor de informes que se usan en una instalación de SQL Server a una instancia que se encuentra en otro equipo.

SQL Server proporciona varios enfoques para mover bases de datos:

  • Desasociar y adjuntar. Este enfoque ofrece la manera más fácil de mover las bases de datos del servidor de informes, pero debe desconectar el servidor de informes mientras las bases de datos están desasociadas.
  • Copias de seguridad y restauración. Este enfoque minimiza las interrupciones del servicio, pero debe ejecutar comandos de Transact-SQL (T-SQL) para realizar las operaciones.
  • Copiar. No se recomienda copiar la base de datos si usa el Asistente para copiar bases de datos. No conserva la configuración de permisos en la base de datos.

En este artículo se muestra cómo usar el enfoque de desasociación y asociación y el enfoque de copia de seguridad y restauración.

Requisitos previos

  • Un servidor de informes en modo nativo configurado que se usa en una instalación de SQL Server.
  • Una instancia de SQL Server en un equipo diferente.

Preparación para mover las bases de datos

Tenga en cuenta los siguientes puntos al mover las bases de datos del servidor de informes:

  • Debe mover o copiar las bases de datos reportserver y reportservertempdb juntas. Una instalación de SSRS requiere ambas bases de datos.
  • El nombre de la base de datos temporal debe ser el mismo que el nombre de la base de datos del servidor de informes principal, pero con un sufijo tempdb .
  • Mover una base de datos no cambia las operaciones programadas que están actualmente definidas para los elementos del servidor de informes.
    • Las programaciones se vuelven a crear la primera vez que reinicie el servicio del servidor de informes.
    • Los trabajos del Agente SQL Server que se usan para desencadenar una programación se vuelven a crear en la nueva instancia de base de datos. No tiene que mover los trabajos al nuevo equipo, pero es posible que quiera eliminar los trabajos que ya no se usan en el equipo actual.
    • Las suscripciones, los informes almacenados en caché y las instantáneas se mantienen en la base de datos que se ha movido. Si una instantánea no recoge los datos actualizados después de mover la base de datos, desactive las opciones de instantánea. A continuación, seleccione Aplicar para guardar los cambios, vuelva a crear la programación y seleccione Aplicar de nuevo para guardar los cambios.
    • Los datos temporales de sesión de usuario y informe almacenados en la base de datos temporal se conservan al mover esa base de datos.

Importante

Los pasos de este artículo se recomiendan cuando la reubicación de la base de datos del servidor de informes es el único cambio que se realiza en la instalación existente. Al migrar una instalación completa de SSRS, debe volver a configurar la conexión y restablecer las claves de cifrado. Por ejemplo, estos pasos son necesarios al mover la base de datos y cambiar la identidad del servicio windows del servidor de informes que usa la base de datos.

Separar y adjuntar bases de datos del servidor de informes

Si puede desconectar el servidor de informes, puede usar el enfoque de desasociación y asociación. En concreto, desasocie las bases de datos de la instancia actual de SQL Server. A continuación, los mueva y adjunte a la instancia que desea usar. Con este método, se conservan los permisos de las bases de datos.

Después de mover las bases de datos, será necesario volver a configurar la conexión del servidor de informes con la base de datos del servidor de informes. Si ejecuta una implementación escalada, debe volver a configurar la conexión de base de datos del servidor de informes para cada servidor de informes de la implementación.

Para usar el enfoque de desasociación y asociación, siga los pasos descritos en las secciones siguientes.

Desasociar las bases de datos

  1. Abra el Administrador de configuración del servidor de informes.

  2. Use la página Claves de cifrado para realizar copias de seguridad de las claves de cifrado de la base de datos del servidor de informes que desea mover.

  3. Use la página Estado del servidor de informes para detener el servicio del servidor de informes.

  4. Abra SQL Server Management Studio y conéctese a la instancia de SQL Server que hospeda las bases de datos del servidor de informes.

  5. Haga clic con el botón derecho en la base de datos del servidor de informes, seleccione Tareas y, a continuación, seleccione Desasociar. Repita este paso para la base de datos temporal del servidor de informes.

Adjuntar las bases de datos

  1. Busque los archivos .mdf y .ldf de la instancia actual de SQL Server. Se encuentran en la carpeta Datos.

    Captura de pantalla de Explorador de archivos. En la carpeta Datos, los archivos .mdf y .ldf se resaltan para la base de datos del servidor de informes y la base de datos temporal.

  2. Copie o mueva los archivos .mdf y .ldf a la carpeta Datos de la instancia de SQL Server que desea usar. Dado que se van a mover dos bases de datos, asegúrese de que mueve o copia los cuatro archivos.

  3. En SQL Server Management Studio, abra una conexión a la nueva instancia de SQL Server que hospeda las bases de datos del servidor de informes.

  4. Haga clic con el botón derecho en el nodo Bases de datos y seleccione Asociar.

  5. Seleccione Agregar para seleccionar los archivos .mdf y .ldf de la base de datos del servidor de informes que desea adjuntar. Repita este paso para la base de datos temporal del servidor de informes.

Complete la configuración.

  1. Compruebe que las bases de datos adjuntas tienen el rol RSExecRole . Debe configurar RSExecRole para seleccionar, insertar, actualizar, eliminar y hacer referencia a permisos en las tablas de base de datos del servidor de informes y ejecutar permisos en los procedimientos almacenados. Para obtener más información, vea Crear el RSExecRole.

  2. Inicie el Administrador de configuración del servidor de informes y abra una conexión al servidor de informes.

  3. En la página Base de datos, seleccione la nueva instancia de SQL Server y seleccione Conectar.

  4. Seleccione la base de datos del servidor de informes que acaba de mover y, a continuación, seleccione Aplicar.

  5. En la página Claves de cifrado, seleccione Restaurar. Especifique el archivo que contiene la copia de seguridad de las claves y la contraseña para desbloquear el archivo.

  6. Reinicie el servicio del servidor de informes.

Realizar copias de seguridad de las bases de datos del servidor de informes y restaurarlas

Si no puede desconectar el servidor de informes, puede usar el enfoque de copia de seguridad y restauración para reubicar las bases de datos del servidor de informes. Con este enfoque, debe usar instrucciones T-SQL.

Los pasos de las secciones siguientes muestran cómo realizar copias de seguridad y restaurar las bases de datos y cómo configurar el servidor de informes para usar las bases de datos en la nueva instancia del servidor.

Usar BACKUP y COPY_ONLY para la copia de seguridad de las bases de datos del servidor de informes

Para realizar una copia de seguridad de las bases de datos, abra SQL Server Management Studio y, a continuación, ejecute las siguientes instrucciones en una ventana de consulta. Estas instrucciones usan el COPY_ONLY argumento y realizan una copia de seguridad de las bases de datos y los archivos de registro.

Antes de ejecutar estas instrucciones, reemplace el <marcador de posición path-to-backup-folder> por la ruta de acceso a la carpeta Backup de la instancia actual, como C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP.

-- To permit log backups, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServer
   SET RECOVERY FULL

-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServer
TO DISK = '<path-to-backup-folder>\ReportServerExtraBackup.bak'
GO

-- If the ReportServerData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerData',
'<path-to-backup-folder>\ReportServerData.bak'

-- Create a logical backup device, ReportServerLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerLog',
'<path-to-backup-folder>\ReportServerLog.bak'

-- Back up the full ReportServer database.
BACKUP DATABASE ReportServer
   TO ReportServerData
   WITH COPY_ONLY

-- Back up the ReportServer log.
BACKUP LOG ReportServer
   TO ReportServerLog
   WITH COPY_ONLY

-- To permit log backups, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServerTempdb
   SET RECOVERY FULL

-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServerTempdb
TO DISK = '<path-to-backup-folder>\ReportServerTempdbExtraBackup.bak'
GO

-- If the ReportServerTempDBData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',
'<path-to-backup-folder>\ReportServerTempDBData.bak'

-- Create a logical backup device, ReportServerTempDBLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',
'<path-to-backup-folder>\ReportServerTempDBLog.bak'

-- Back up the full ReportServerTempDB database.
BACKUP DATABASE ReportServerTempDB
   TO ReportServerTempDBData
   WITH COPY_ONLY

-- Back up the ReportServerTempDB log.
BACKUP LOG ReportServerTempDB
   TO ReportServerTempDBLog
   WITH COPY_ONLY

Usar RESTORE y MOVE para cambiar la ubicación de las bases de datos del servidor de informes

Para restaurar las bases de datos, abra SQL Server Management Studio y, a continuación, ejecute las siguientes instrucciones en una ventana de consulta.

En estas instrucciones:

  • Las RESTORE operaciones de los archivos de base de datos y de registro se ejecutan por separado.

  • El MOVE argumento proporciona una manera de especificar una ruta de acceso. Este argumento usa el nombre lógico del archivo de datos. Para buscar el nombre lógico, ejecute la instrucción siguiente. En primer lugar, reemplace el <marcador de posición path-to-report-server-database-backup-file> por la ruta de acceso al archivo de copia de seguridad de la base de datos del servidor de informes, como C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

    RESTORE FILELISTONLY FROM DISK='<path-to-report-server-database-backup-file>';
    

    Puede encontrar el nombre lógico en la columna LogicalName de la salida.

    Captura de pantalla de una instrucción RESTORE FILELISTONLY en una ventana de consulta de SQL Server Management Studio. En la salida, la columna LogicalName está resaltada.

    Puede ejecutar una instrucción similar para buscar el nombre lógico de la base de datos temporal:

    RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • El FILE argumento proporciona una manera de especificar la posición del archivo de registro que se va a restaurar. Para buscar la posición del archivo, ejecute la instrucción siguiente. En primer lugar, reemplace el <marcador de posición path-to-report-server-database-backup-file> por la ruta de acceso al archivo de copia de seguridad de la base de datos del servidor de informes, como C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak.

    RESTORE HEADERONLY FROM DISK='<path-to-report-server-database-backup-file>';
    

    Puede encontrar la posición del archivo en la columna Posición de la salida.

    Captura de pantalla de una instrucción RESTORE HEADERONLY en una ventana de consulta de SQL Server Management Studio. En la salida, la columna Posición está resaltada.

    Puede ejecutar una instrucción similar para buscar la posición del archivo de la base de datos temporal:

    RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';
    
  • El NORECOVERY argumento realiza la restauración inicial. Este argumento mantiene la base de datos en un RESTORING estado, lo que le da tiempo para revisar las copias de seguridad de registros para determinar cuál se va a restaurar.

  • En el último paso se repite la operación RESTORE con el argumento RECOVERY.

Antes de ejecutar estas instrucciones, reemplace los siguientes marcadores de posición por los valores adecuados:

Marcador de posición Descripción Ejemplo
<path-to-backup-folder> Ruta de acceso a la carpeta Backup de la instancia actual C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP
<path-to-new-data-folder> Ruta de acceso a la carpeta Datos de la nueva instancia C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA
<report-server-database-logical-name> Nombre lógico de la base de datos del servidor de informes ReportServer
<report-server-database-log-logical-name> Nombre lógico del registro de base de datos del servidor de informes ReportServer_log
<report-server-database-log-file-position> Posición de archivo del archivo de registro de base de datos del servidor de informes 2
<temporary-database-logical-name> Nombre lógico de la base de datos temporal ReportServerTempDB
<temporary-database-log-logical-name> Nombre lógico del registro de base de datos temporal ReportServerTempDB_log
<temporary-database-log-file-position> Posición del archivo de registro de base de datos temporal 2
-- Restore the report server database and move it to the new instance folder.
RESTORE DATABASE ReportServer
   FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
   WITH NORECOVERY,
      MOVE '<report-server-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer.mdf',
      MOVE '<report-server-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer_Log.ldf';
GO

-- Restore the report server log file to the new instance folder.
RESTORE LOG ReportServer
   FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
   WITH NORECOVERY, FILE=<report-server-database-log-file-position>,
      MOVE '<report-server-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer.mdf',
      MOVE '<report-server-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServer_Log.ldf';
GO

-- Restore and move the report server temporary database.
RESTORE DATABASE ReportServerTempdb
   FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
   WITH NORECOVERY,
      MOVE '<temporary-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB.mdf',
      MOVE '<temporary-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO

-- Restore the temporary database log file to the new instance folder.
RESTORE LOG ReportServerTempdb
   FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
   WITH NORECOVERY, FILE=<temporary-database-log-file-position>,
      MOVE '<temporary-database-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB.mdf',
      MOVE '<temporary-database-log-logical-name>' TO
         '<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO

-- Perform the final restore operation on the report database.
RESTORE DATABASE ReportServer
   WITH RECOVERY
GO

-- Perform the final restore operation on the temporary database.
RESTORE DATABASE ReportServerTempDB
   WITH RECOVERY
GO

Configuración de la conexión de base de datos del servidor de informes

  1. Inicie el Administrador de configuración del servidor de informes y abra una conexión al servidor de informes.

  2. En la página Base de datos, seleccione Cambiar base de datos.

  3. En la página Cambiar base de datos, seleccione Elegir una base de datos del servidor de informes existente y, a continuación, seleccione Siguiente.

  4. En Nombre del servidor, escriba la instancia de SQL Server que ahora hospeda la base de datos del servidor de informes y, a continuación, seleccione Probar conexión.

  5. Después de probar la conexión, seleccione Siguiente.

  6. En Base de datos del servidor de informes, seleccione la base de datos del servidor de informes que desea usar y, a continuación, seleccione Siguiente.

  7. En Credenciales, especifique las credenciales que usa el servidor de informes para conectarse a la base de datos del servidor de informes y, a continuación, seleccione Siguiente.

  8. Haga clic en Siguiente y después en Finalizar.

Nota:

En una instalación de SSRS, la instancia de SQL Server Motor de base de datos debe incluir el rol RSExecRole. La creación de roles, el registro de inicio de sesión y las asignaciones de roles se producen cuando se usa el Administrador de configuración del servidor de informes para establecer la conexión de base de datos del servidor de informes. Si usa enfoques alternativos, como la utilidad del símbolo del sistema de rsconfig.exe, el servidor de informes no está en estado de funcionamiento. En ese caso, es posible que tenga que escribir código de Instrumental de administración de Windows (WMI) para que el servidor de informes esté disponible. Para obtener más información, consulte Acceso al proveedor WMI de Reporting Services.