将报表服务器数据库移动到另一台计算机(SSRS 本机模式)

可以将安装 SQL Server 数据库引擎中使用的报表服务器数据库移到另一台计算机上的实例。 必须将 reportserver 和 reportservertempdb 数据库一起移动或复制。 Reporting Services 安装需要这两个数据库;reportservertempdb 数据库必须按名称与要移动的主报表服务器数据库相关。

适用于: 报告服务本机模式。

移动数据库不会影响当前已为报表服务器项定义的计划操作。

  • 首次重启报表服务器服务时,将重新创建计划。

  • 用于触发计划的 SQL Server 代理作业将在新的数据库实例上重新创建。 无需将作业移动到新计算机,但你可能想要删除不再使用的计算机上的作业。

  • 订阅、缓存的报表和快照保留在移动数据库中。 如果在移动数据库后快照未选取刷新的数据,请清除报表管理器中的快照选项,单击“ 应用 ”保存更改,重新创建计划,然后单击“ 应用 ”以保存更改。

  • 移动该数据库时,将保留存储在 reportservertempdb 中的临时报表和用户会话数据。

SQL Server 提供了几种移动数据库的方法,包括备份和还原、附加和分离和复制。 并非所有方法都适合将现有数据库重新定位到新的服务器实例。 您应当选择迁移报表服务器数据库的方法取决于您的系统可用性要求。 移动报表服务器数据库的最简单方法是附加和分离它们。 但是,此方法要求在分离数据库时使报表服务器脱机。 如果要最大程度地减少服务中断,则必须运行 Transact-SQL 命令来执行作,则备份和还原是更好的选择。 不建议复制数据库(具体而言,使用复制数据库向导):它不会保留数据库中的权限设置。

重要

建议当迁移报表服务器数据库是您对现有安装进行的唯一变更时,执行本主题中提供的步骤。 迁移整个 Reporting Services 安装(即移动数据库并更改使用数据库的报表服务器 Windows 服务的标识)需要重新配置连接和加密密钥重置。

分离和连接报表服务器数据库

如果可将报表服务器脱机,则可以分离数据库以将其移动到要使用的 SQL Server 实例。 此方法保留数据库中的权限。 如果使用 SQL Server 2014 数据库,则必须将其移动到另一个 SQL Server 2014 实例。 移动数据库后,必须重新配置与报表服务器数据库的报表服务器连接。 如果运行的是横向扩展部署,则必须为部署中的每个报表服务器重新配置报表服务器数据库连接。

使用以下步骤移动数据库:

  1. 备份要移动的报表服务器数据库的加密密钥。 可以使用 Reporting Services 配置工具来备份密钥。

  2. 停止报表服务器服务。 可以使用 Reporting Services 配置工具停止服务。

  3. 启动 SQL Server Management Studio 并打开与托管报表服务器数据库的 SQL Server 实例的连接。

  4. 右键单击报表服务器数据库,指向“任务”,然后单击“ 分离”。 对报表服务器临时数据库重复此步骤。

  5. 将.mdf和 .ldf 文件复制或移动到要使用的 SQL Server 实例的数据文件夹。 由于要移动两个数据库,因此请确保移动或复制所有四个文件。

  6. 在 Management Studio 中,打开与将承载报表服务器数据库的新 SQL Server 实例的连接。

  7. 右键单击“数据库”节点,然后单击“ 附加”。

  8. 单击“ 添加 ”选择要附加的报表服务器数据库.mdf和 .ldf 文件。 对报表服务器临时数据库重复此步骤。

  9. 附加数据库后,请验证 RSExecRole 该角色是否为报表服务器数据库和临时数据库中的数据库角色。 RSExecRole 必须对报表服务器数据库表具有选择、插入、更新、删除和引用权限,以及对存储过程执行权限。 有关详细信息,请参阅 创建 RSExecRole

  10. 启动 Reporting Services 配置工具并打开与报表服务器的连接。

  11. 在“数据库”页上,选择新的 SQL Server 实例,然后单击“ 连接”。

  12. 选择刚移动的报表服务器数据库,然后单击“ 应用”。

  13. 在“加密密钥”页上,单击“还原”。 指定包含密钥的备份副本和用于解锁文件的密码的文件。

  14. 重新启动报表服务器服务。

备份和还原报表服务器数据库

如果无法使报表服务器脱机,可以使用备份和还原重新定位报表服务器数据库。 必须使用 Transact-SQL 指令来执行备份和还原。 还原数据库后,必须将报表服务器配置为在新服务器实例上使用数据库。 有关详细信息,请参阅本主题末尾的说明。

使用 BACKUP 和 COPY_ONLY 备份报表服务器数据库

备份数据库时,设置COPY_ONLY参数。 请务必备份数据库和日志文件。

-- To permit log backups, before the full database backup, alter the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE ReportServer  
   SET RECOVERY FULL  
  
-- If the ReportServerData device does not exist yet, create it.   
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerData',   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\BACKUP\ReportServerData.bak'  
  
-- Create a logical backup device, ReportServerLog.  
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerLog',   
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\BACKUP\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, before the full database backup, alter the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE ReportServerTempdb  
   SET RECOVERY FULL  
  
-- If the ReportServerTempDBData device does not exist yet, create it.   
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',   
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\BACKUP\ReportServerTempDBData.bak'  
  
-- Create a logical backup device, ReportServerTempDBLog.  
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',   
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\BACKUP\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  

使用 RESTORE 和 MOVE 重新定位报表服务器数据库

还原数据库时,请务必包含 MOVE 参数,以便可以指定路径。 使用 NORECOVERY 参数执行初始还原;这会使数据库保持 RESTOREING 状态,让你有时间查看日志备份以确定要还原的备份。 最后一步是使用 RECOVERY 参数重复执行 RESTORE 操作。

MOVE 参数使用数据文件的逻辑名称。 若要查找逻辑名称,请执行以下语句: RESTORE FILELISTONLY FROM DISK='C:\ReportServerData.bak';

以下示例包含 FILE 参数,以便可以指定要还原的日志文件的文件位置。 若要查找文件位置,请执行以下语句: RESTORE HEADERONLY FROM DISK='C:\ReportServerData.bak';

还原数据库和日志文件时,应分别运行每个 RESTORE 操作。

-- Restore the report server database and move to new instance folder   
RESTORE DATABASE ReportServer  
   FROM DISK='C:\ReportServerData.bak'  
   WITH NORECOVERY,   
      MOVE 'ReportServer' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer.mdf',   
      MOVE 'ReportServer_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer_Log.ldf';  
GO  
  
-- Restore the report server log file to new instance folder   
RESTORE LOG ReportServer  
   FROM DISK='C:\ReportServerData.bak'  
   WITH NORECOVERY, FILE=2  
      MOVE 'ReportServer' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer.mdf',   
      MOVE 'ReportServer_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer_Log.ldf';  
GO  
  
-- Restore and move the report server temporary database  
RESTORE DATABASE ReportServerTempdb  
   FROM DISK='C:\ReportServerTempDBData.bak'  
   WITH NORECOVERY,   
      MOVE 'ReportServerTempDB' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServerTempDB.mdf',   
      MOVE 'ReportServerTempDB_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\REportServerTempDB_Log.ldf';  
GO  
  
-- Restore the temporary database log file to new instance folder   
RESTORE LOG ReportServerTempdb  
   FROM DISK='C:\ReportServerTempDBData.bak'  
   WITH NORECOVERY, FILE=2  
      MOVE 'ReportServerTempDB' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServerTempDB.mdf',   
      MOVE 'ReportServerTempDB_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\REportServerTempDB_Log.ldf';  
GO  
  
-- Perform final restore  
RESTORE DATABASE ReportServer  
   WITH RECOVERY  
GO  
  
-- Perform final restore  
RESTORE DATABASE ReportServerTempDB  
   WITH RECOVERY  
GO  

如何配置报表服务器数据库连接

  1. 启动 Reporting Services 配置管理器并打开与报表服务器的连接。

  2. 在“数据库”页上,单击“ 更改数据库”。 单击 “下一步”

  3. 单击“ 选择现有报表服务器数据库”。 单击 “下一步”

  4. 选择现在托管报表服务器数据库的 SQL Server,然后单击“ 测试连接”。 单击 “下一步”

  5. 在“数据库名称”中,选择要使用的报表服务器数据库。 单击 “下一步”

  6. 在凭据设置中,指定报表服务器用于连接数据库时使用的凭据。 单击 “下一步”

  7. 单击 “下一步” ,然后单击 “完成”

注释

安装 Reporting Services 时,SQL Server 数据库引擎实例必须包含 RSExecRole 角色。 通过 Reporting Services 配置工具设置报表服务器数据库连接时,会发生角色创建、登录注册和角色分配。 如果使用备用方法(具体而言,如果使用 rsconfig.exe 命令提示符实用工具)配置连接,则报表服务器将不会处于工作状态。 可能需要编写 WMI 代码才能使报表服务器可用。 有关详细信息,请参阅 访问 Reporting Services WMI 提供程序

另请参阅

创建 RSExecRole
启动和停止报表服务器服务
配置报表服务器数据库连接 (SSRS 配置管理器)
配置无人参与的执行帐户(SSRS 配置管理器)
Reporting Services 配置管理器(本机模式)
rsconfig 实用工具 (SSRS)
配置和管理加密密钥(SSRS 配置管理器)
报表服务器数据库 (SSRS 本机模式)