不久,我会将 2008 R2 SSRS 安装迁移到 AWS 中的新 SQL 2019 Always on AG。这个将包含订阅,我以前从未处理过它们。我在这里阅读了文档:SSRS and AG's ,它指出控制订阅的代理作业在新主服务器上发生故障转移后会自动重新创建,但仍存在于旧主服务器上。
对于我的其他 SSRS 迁移,我编写的代码会在故障转移后自动负责在适当的节点上重新启动 SQL 代理和 SSRS 服务以使用新节点。我在所有副本上都有相同的作业,并且我还有一个作业步骤来检查服务器是否是主服务器。如果不是,则作业将不会运行。
由于我的作业已经同步并且根据主副本状态控制了执行,我宁愿使用它来控制订阅,但是 SQL 会覆盖订阅的现有作业吗?还是只会添加不存在的工作?我目前没有服务器可以对此进行测试,也无法在网上找到这种具体情况。我宁愿让作业一直在那里,让作业逻辑根据副本状态运行作业。订阅是否可能,或者我是否需要始终禁用旧主服务器上的作业,并让 SQL 在新主服务器上重新创建作业?
我还想将 sql 代理作业从无意义的 GUID 重命名为更直观的名称。如果我这样做,会不会影响正在执行的工作?
我多次处理过这种情况。
最好不要修改 SSRS 服务创建的订阅作业。毕竟他们没有工作时间表。计划在 SSRS 数据库内部进行管理。使用 SQL Server Always on AG,作业不会被复制,因为它们的定义在 msdb 中。因此,在用于 SSRS 的 Alwayson AG 设置中,您在 AG 中有一个 SSRS 数据库,但您有两个(或更多)可以包含 ssrs 作业和两个(或更多)SSRS 服务的 msdb。每个运行的 SSRS 服务将执行计划的作业,处理通过 ssrs 数据库划分工作负载。在这里,我假设您将 SSRS 配置为使用 AG 侦听器进行数据库连接。
请记住将正确的 ssrs 服务用户放置在每个实例的 msdb 数据库角色 (RSExecRole) 中,如下所述:
https://learn.microsoft.com/it-it/sql/reporting-services/security/create-the-rsexecrole?view=sql-server-ver15
每次 ssrs 启动时都会重新创建 SSRS 订阅作业,因此当发生故障转移时,您必须启动或重新启动 ssrs 服务来处理此问题。
那么发生了什么取决于你设计的 AG 的角色是什么:HA 或 DR。
在 DR 设计中,我建议您不要关闭 SSRS 服务,因为它会在 DR 站点上执行订阅,这通常不好。
在 HA 设计中,您可以打开 SSRS 服务,以便平衡两个实例之间的工作负载(也要注意许可)