管理报表服务器数据库

Reporting Services 部署将两个 SQL Server 关系数据库用作内部存储。默认情况下,这两个数据库分别命名为 ReportServer 和 ReportServerTempdb。ReportServerTempdb 随报表服务器主数据库一同创建,用于存储临时数据、会话信息和缓存的报表。

在 Reporting Services 中,数据库管理任务包括备份和还原报表服务器数据库,以及管理用于加密和解密敏感数据的加密密钥。

SQL Server 提供了许多用来管理报表服务器数据库的工具。

  • 若要备份或还原报表服务器数据库、移动报表服务器数据库或恢复报表服务器数据库,可以使用 SQL Server Management Studio、Transact-SQL 命令或数据库命令提示实用工具。有关说明,请参阅 SQL Server 联机丛书中的将报表服务器数据库移至其他计算机

  • 若要将现有数据库内容复制到另一个报表服务器数据库,可以附加报表服务器数据库的一个副本,并将其用于其他报表服务器实例。或者,可以创建并运行一个使用 SOAP 调用的脚本,以便在新数据库中重新创建报表服务器。可以使用 rs 实用工具来运行该脚本。

  • 若要管理报表服务器与报表服务器数据库之间的连接,以及查找用于特定报表服务器实例的数据库,可以使用 Reporting Services 配置工具中的“数据库安装”页。若要了解有关报表服务器与报表服务器数据库的连接的详细信息,请参阅配置报表服务器数据库连接

SQL Server 登录名和数据库权限

报表服务器数据库由报表服务器在内部使用。报表服务器服务可建立到任一数据库的连接。可以使用 Reporting Services 配置工具来配置报表服务器与报表服务器数据库的连接。

报表服务器到数据库的连接凭据可以是服务帐户、Windows 本地或域用户帐户或者 SQL Server 数据库用户。您必须为连接选择现有的帐户,因为 Reporting Services 不会为您创建帐户。

系统会自动为您指定的帐户创建一个用来登录报表服务器数据库的 SQL Server 登录。

数据库权限也是自动配置的。Reporting Services 配置工具将向帐户或数据库用户授予对报表服务器数据库的 Public 和 RSExecRole 角色。RSExecRole 提供了用于访问数据库表和执行存储过程的权限。 RSExecRole 是在创建报表服务器数据库时在 master 和 msdb 数据库中创建的。RSExecRole 是报表服务器数据库 db_owner 角色的成员,它允许报表服务器更新其架构以支持自动升级过程。

报表服务器数据库的命名约定

创建主数据库时,数据库名称必须遵循为标识符指定的规则。临时数据库名称始终与报表服务器主数据库的名称相同,但是带有 Tempdb 后缀。您不能为临时数据库选择其他名称。

由于报表服务器数据库被视为内部组件,因此不支持对其进行重命名。如果重命名报表服务器数据库,则会出现错误。具体来说,如果重命名主数据库,则将显示一条错误消息,说明数据库名称不同步。如果重命名 ReportServerTempdb 数据库,则稍后运行报表时将出现以下内部错误:

“报表服务器上出现内部错误。有关详细信息,请参阅错误日志。(rsInternalError)

对象名‘ReportServerTempDB.dbo.PersistedStream’无效。”

由于 ReportServerTempdb 名称是在内部存储的,并且由存储过程用来执行内部操作,所以会发生此错误。重命名临时数据库将使存储过程无法正常工作。

针对报表服务器数据库启用快照隔离

您不能针对报表服务器数据库启用快照隔离。如果快照隔离处于打开状态,则将遇到以下错误“所选报表尚未做好准备,无法查看。报表仍处于呈现状态,或报表快照不可用。”

如果快照隔离不是有意启用的,则说明属性可能已经由另一个应用程序设置,或者已经针对**“模型”**数据库启用了快照隔离,从而导致所有的新数据库都继承该设置。

若要针对报表服务器数据库关闭快照隔离,请启动 Management Studio,打开一个新的查询窗口,粘贴下面的脚本,然后运行该脚本:

ALTER DATABASE ReportServer
SET ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE ReportServerTempdb
SET ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE ReportServer
SET READ_COMMITTED_SNAPSHOT OFF
ALTER DATABASE ReportServerTempDb
SET READ_COMMITTED_SNAPSHOT OFF

关于数据库版本

在 Reporting Services 中,未提供有关数据库版本的显式信息。但是,由于数据库版本始终与产品版本同步,因此可以使用产品版本信息来了解数据库版本的更改时间。Reporting Services 的产品版本信息是通过出现在日志文件中以及所有 SOAP 调用的标头中的文件版本信息指示的;连接到报表服务器 URL(例如,打开浏览器浏览 https://localhost/reportserver)时也会指示 Reporting Services 的产品版本信息。有关详细信息,请参阅如何检测版本信息 (Reporting Services)