SQL 2019 Always On AG环境下共享计划跨副本可见性问题求助
解决SQL Server Always On AG辅助副本上SSRS共享计划不可用的问题
核心原因
SSRS的核心数据库(ReportServer和ReportServerTempDB)部署在Always On AG时,辅助副本默认处于只读状态。而共享计划的读取、创建操作需要对ReportServer数据库执行读写操作,辅助副本的只读特性直接导致这些操作失败,触发数据库连接或权限类错误。
必要配置步骤
1. 配置AG辅助副本为可读状态
- 在SQL Server Management Studio中,找到目标Always On高可用性组,右键选择属性 → 切换到副本标签页。
- 找到对应的辅助副本,将「可读辅助副本」设置为
Read-intent only或Yes,允许应用通过只读意向连接访问辅助副本数据。
2. 修改SSRS数据库连接字符串为AG侦听器
- 将SSRS的数据库连接目标从单个实例名改为AG侦听器名称,并添加关键参数:
MultiSubnetFailover=True:适配Azure多子网AG环境,优化故障转移速度。ApplicationIntent=ReadOnly:让SSRS在连接辅助副本时以只读模式访问,连接主副本时自动切换为读写模式。
- 示例连接字符串:
Data Source=YourAGListenerName;Initial Catalog=ReportServer;Integrated Security=True;MultiSubnetFailover=True;ApplicationIntent=ReadOnly - 注意:
ReportServerTempDB无需加入AG,每个SSRS实例应使用本地独立的ReportServerTempDB,避免共享临时数据导致冲突。
3. 启用SSRS的只读连接配置
- 打开Reporting Services配置管理器,进入「数据库」选项卡:
- 点击「更改数据库」→ 选择「现有报表服务器数据库」→ 连接到AG侦听器。
- 在数据库连接配置步骤中,勾选「启用只读连接」选项,确保SSRS在辅助副本上运行时能以只读模式读取
ReportServer数据。
4. 确认AG同步状态与故障转移模式
- 确保AG故障转移模式设置为同步提交(Azure环境推荐配置,保证主副数据一致性)。
- 在SSMS中检查
ReportServer数据库的同步状态,确认辅助副本的同步状态为「已同步」,无未完成的事务同步。
5. 验证SSRS服务账户权限
- 主副本上:SSRS服务账户需拥有
ReportServer数据库的db_owner权限,用于创建、修改共享计划。 - 辅助副本上:SSRS服务账户需拥有
ReportServer数据库的db_datareader权限,用于读取共享计划数据。
验证操作
- 手动触发AG故障转移到辅助副本,确认SSRS可正常查看共享计划列表。
- 在辅助副本上尝试创建共享计划,操作会自动通过AG侦听器路由到主副本完成提交,待数据同步后,辅助副本即可显示新创建的计划。
内容的提问来源于stack exchange,提问作者SleepingSidewinder
相关产品推荐
相关产品推荐

