可用性组如何与预定作业和SSIS包一起使用?


8

我在AlwaysOn可用性组中的数据库中设置了2个SQL Server。

我还设置了针对数据库运行的作业。在故障转移期间,如何确保作业将继续在辅助服务器上运行?我是否需要在两台计算机上都安装作业和SSIS软件包,并在辅助计算机上手动禁用它们...然后在发生故障转移时手动启用它们?还是有内置的功能来解决这个问题?

Answers:


4

是的,您将需要在希望其他特定作业为主要副本的其他任何副本上创建作业

您需要为每个SQL Server代理作业运行时/何时创建自己的逻辑。例如,是否要仅在当前实例是特定可用性组的主副本时才运行作业?您需要将其投入您的工作中。不能自动覆盖它,因为这将剥夺AlwaysOn AG的灵活性。是否要在辅助副本上禁用它们完全取决于您,这些作业的功能以及运行它们的方式/时间/时间。

请记住,辅助副本服务器不仅仅是等待故障转移的备用服务器。它可能是功能齐全的可访问服务器。因此,让所有工作闲置都是极大的残疾。

因此,是的,您将需要将我们的作业推送到其他副本,并使用一些逻辑来确定作业在启动时是否应继续执行。

例如,备份作业可以通过确定当前副本是否是特定数据库的首选副本来利用sys.fn_hadr_backup_is_preferred_replica函数。这将推导您如何为备份首选项设置可用性组。


听起来很有希望。我只希望作业在主服务器上运行(可能是当时的服务器)。
约翰

1

我在联机丛书中遇到了类似的挫败感,说“在安排您的工作时,添加仅在主数据库上执行的逻辑”,但没有说如何做。sys.fn_hadr_backup_is_preferred_replica对于备份作业非常好,但是对于“ is primary”或您拥有的东西似乎没有相似的功能。幸运的是,您可以从类似以下内容中获取该信息:

select 
  DB_NAME(database_id),role_desc
from 
  sys.dm_hadr_availability_replica_states a
inner join 
  sys.dm_hadr_database_replica_states d
on 
  a.replica_id = d.replica_id
  and
  a.group_id = d.group_id
where 
  database_id = DB_ID()
and 
  d.is_local = 1

那只会让您知道当前数据库所处的角色。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.