管理报表服务器数据库(SSRS 本机模式)
Reporting Services 部署将两个 SQL Server 关系数据库用作内部存储。 默认情况下,数据库的名称为 ReportServer
和 ReportServerTempdb
。 ReportServerTempdb
会随报表服务器主数据库一同创建,用于存储临时数据、会话信息和缓存的报表。
在 Reporting Services 中,数据库管理任务包括备份和还原报表服务器数据库。 此外,这些任务还包括管理用于加密和解密敏感数据的加密密钥。
为了管理报表服务器数据库,SQL Server 提供了各种工具。
可使用 SQL Server Management Studio、Transact-SQL 命令或数据库命令提示符实用工具执行以下操作:
- 备份或还原报表服务器数据库
- 移动报表服务器数据库
- 恢复报表服务器数据库
有关详细信息,请参阅将报表服务器数据库移至其他计算机(SSRS 本机模式)。
若要将现有数据库内容复制到另一个报表服务器数据库,可以附加报表服务器数据库的一个副本,并将其用于其他报表服务器实例。 或者,可以创建并运行一个使用 SOAP 调用的脚本,以便在新数据库中重新创建报表服务器。 可以使用 rs 实用工具来运行该脚本。
要管理报表服务器与报表服务器数据库之间的连接,可使用 Reporting Services 配置工具中的“数据库安装”页。 此外,还可在该页面查找用于特定报表服务器实例的数据库。 要了解有关报表服务器连接到报表服务器数据库的详细信息,请参阅配置报表服务器数据库连接(报表服务器配置管理器)。
SQL Server 登录名和数据库权限
报表服务器数据库由报表服务器在内部使用。 报表服务器服务可建立到任一数据库的连接。 可以使用 Reporting Services 配置工具来配置报表服务器与报表服务器数据库的连接。
报表服务器到数据库的连接凭据可以是服务帐户、Windows 本地或域用户帐户或者 SQL Server 数据库用户。 必须为连接选择现有的帐户。 Reporting Services 不会自动创建帐户。
系统会自动为指定的帐户创建用于登录报表服务器数据库的 SQL Server 登录名。
数据库权限也是自动配置的。 Reporting Services 配置工具将向帐户或数据库用户分配报表服务器数据库的“Public”和“RSExecRole”角色。 RSExecRole 提供了用于访问数据库表和执行存储过程的权限。 创建报表服务器数据库时,将在主数据库和 msdb 中创建“RSExecRole”。 “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
)时也会指示这些产品版本信息。