在 SQL Always On HA 群集上调度作业

Rob*_*ton 5 sql-server-agent

当使用 AOHA 集群的 SQL Server 代理调度作业时,是否像您将服务器分开一样使用主目标配置?或者是否有更好的方法将作业分发到所有服务器,以便在主服务器出现故障时其中一个副本可以获取它们?

Kin*_*hah 4

我们在属于 AlwaysON AG 的所有实例中创建作业(并同步它们)。

您应该在作业中添加一个额外的逻辑来检查实例是否为主实例,然后仅运行该作业。伪代码如下所示:

-- http://dba.stackexchange.com/a/45152/8783
if (select
        ars.role_desc
    from sys.dm_hadr_availability_replica_states ars
    inner join sys.availability_groups ag
    on ars.group_id = ag.group_id
    where ag.name = 'YourAvailabilityGroupName'
    and ars.is_local = 1) = 'PRIMARY'
begin
    -- this server is the primary replica, do something here
end
else
begin
    -- this server is not the primary replica, (optional) do something here
end
Run Code Online (Sandbox Code Playgroud)

要同步登录、作业等,您可以使用PowerShellSQLSkills 中的此实用程序 (不确定它是否适用于 2014 年!)