加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – SQL Server代理作业和可用性组

发布时间:2020-12-30 14:09:31 所属栏目:MsSql教程 来源:网络整理
导读:我正在寻找处理SQL Server 2012可用性组中的计划SQL Server代理作业的最佳实践.也许我错过了一些东西,但是在目前的状态下我觉得SQL Server Agent并没有真正集成这个伟大的SQL2012功能. 如何使计划的SQL代理作业知道节点切换?例如,我在主节点上运行的作业每小

我正在寻找处理SQL Server 2012可用性组中的计划SQL Server代理作业的最佳实践.也许我错过了一些东西,但是在目前的状态下我觉得SQL Server Agent并没有真正集成这个伟大的SQL2012功能.

如何使计划的SQL代理作业知道节点切换?例如,我在主节点上运行的作业每小时加载一次数据.现在,如果主服务器发生故障,我如何激活现在成为主服务器的辅助服务器上的作业?

如果我总是在辅助服务器上安排作业,则会失败,因为辅助服务器是只读的.

解决方法

在SQL Server代理作业中,有一些条件逻辑来测试当前实例是否正在为您在可用性组上查找的特定角色提供服务:
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

所有这一切都是拉动本地副本的当前角色,如果它处于PRIMARY角色,那么如果它是主副本,您可以执行您的工作需要做的任何事情. ELSE块是可选的,但如果本地副本不是主副本,则它可以处理可能的逻辑.

当然,将上述查询中的“YourAvailabilityGroupName”更改为您的实际可用性组名称.

不要将可用性组与故障转移群集实例混淆.实例是否是给定可用性组的主副本或辅助副本不会影响服务器级对象,如SQL Server代理作业等.

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读