SqlServer 多服务器管理(MSSQL分布式作业管理)

范围的多个实例的自动化管理 SQL Server 称为 多服务器管理。 使用多服务器管理可以执行下列操作:

管理两台或多台服务器。

在企业服务器之间安排数据仓库的信息流。

若要利用多服务器管理,您必须至少有一台主服务器且至少有一台目标服务器。 主服务器将作业分发到目标服务器并从它那里接收事件。 主服务器还存储在目标服务器上运行的作业的作业定义的中央副本。 目标服务器定期连接到主服务器来更新它们的作业计划。 如果主服务器上存在新作业,目标服务器将下载该作业。 目标服务器在完成作业后,会重新连接到主服务器并报告作业状态。 请注意,在执行任何数据库时,作业定义必须是同一个相关活动。

以下图例显示了主服务器与目标服务器之间的关系。

将该备份作业一次性写入主服务器,然后将部门服务器登记为目标服务器。 从它们登记时刻起,所有部门服务器将运行相同的备份作业,而您只需定义一次作业。

开始测试吧!!本测试为单服务器上的双实例.

MSSQL 2014 :HZC\MSSQLSERVER (主服务器实例)

MSSQL 2016 :HZC\DOG (目标服务器实例)

首先改注册表,取消主服务器和目标服务器之间的加密。打开注册表,搜索更改两个选项。

MsxEncryptChannelOptions = 0

AllowDownloadedJobsToMatchProxyName = 0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\SQLServerAgent\MsxEncryptChannelOptions

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\SQLServerAgent\AllowDownloadedJobsToMatchProxyName

说明如下:



说明


0


在该目标服务器和主服务器之间禁用加密。 请仅在目标服务器和主服务器之间的通道已使用其他方法进行了保护时才选择此选项。


1


仅在该目标服务器和主服务器之间启用加密,但不需要证书验证。


2


在该目标服务器和主服务器之间启用完全 SSL 加密和证书验证。 这是默认设置。 除非出于特定的原因要选择其他值,否则建议不要对其进行更改。

代理启动账户添加到实例账户中,并授予服务器角色 sysadmin

接下来直接开始吧!右键主服务器代理,将当前设置为主服务器

到这一步,在已注册服务器中将目标实例添加上,下一步步完成即可!

(打开已注册服务器:菜单栏——》视图——》已注册服务器——》将服务器添加)

或者一个命令即可配置完成!将当前服务器添加到主服务器的可用服务器列表中(目标实例执行)

--将当前服务器添加到主服务器的可用服务器列表中(目标实例执行)
EXEC msdb.dbo.sp_msx_enlist
@msx_server_name = N'HZC', --主服务器
@location = N'location' --要添加的目标服务器的位置
GO

好了,代理的名字变了,配置完成!可以看到,主服务器实例代理下区分了“本地作业” 和 “多服务器作业”。

现在简单创建一个作业,步骤执行内容为 :select getdate() 。最后一个选项 “目标”,这是区分本地还是多服务器的作业,如下勾选目标服务器:

很快,发现同步了。

现在打开目标管理器进行同步管理。右键主服务器代理——》多服务器管理——》管理目标服务器

这时最近一次同步的时间。

作业 “test2” 是主服务器刚创建的,创建时或者修改时,记录会记录在 “下载指令” 中。目标服务器会逐条执行这些记录,若“下载日期” 不为空,则表示已经同步过来了。

--下载指令(主实例执行)
EXEC msdb.dbo.sp_help_downloadlist
SELECT * FROM msdb.dbo.sysdownloadlist
GO

若指令出现了错误,也可以将错误的指令删除。

--	Delete from msdb.dbo.sysdownloadlist where instance_id < 5 --可以直接删除

若需要某条指令重新同步或新增同步,可以将指令插入到表 sysdownloadlist 中。

--向系统表 sysdownloadlist 中插入操作(行),以供目标服务器下载和执行(主实例执行)
--https://msdn.microsoft.com/zh-cn/library/ms173737.aspx
DECLARE @jobid CHAR(36)
SELECT @jobid=job_id FROM msdb.dbo.sysjobs WHERE name = 'test2'
EXEC msdb.dbo.sp_post_msx_operation
@operation = 'INSERT',
@object_type =  'JOB',
@job_id = @jobid,
@specific_target_server = 'HZC\DOG'
GO

目标服务器的作业会记录每次执行信息,而主服务器中的 【作业活动监视器】可以看到所有作业最近的状态。

--作业活动监视器(目标服务器作业失败了会反映到这里(主实例执行)
EXEC msdb.dbo.sp_help_job
SELECT * FROM msdb.dbo.sysjobservers
GO

现在将本地作业改为多服务器作业。

--将本地作业更改为多服务器作业(主实例执行)
EXEC msdb.dbo.sp_delete_jobserver
@job_name=N'test',
@server_name = N'HZC'
GO
EXEC msdb.dbo.sp_add_jobserver
@job_name = N'test',
@server_name =  N'HZC\DOG'
GO

存储过程 sp_delete_jobserver 和 sp_add_jobserver
只是对服务器的选项选择,也可以两个都不选(只能sp_delete_jobserver执行),选择一个时必须先删除掉另一个。

现在说说管理界面吧!

看到四个选择:脱离,设置轮询间隔,同步时钟,开始作业。语义明显,不多说明,后3个设置脚本如下:

--设置轮询间隔(主实例执行)
EXEC msdb.dbo.sp_post_msx_operation
@operation = 'SET-POLL',
@object_type = 'SERVER',
@specific_target_server = 'HZC\DOG',
@value = 60--以秒为单位的轮询间隔(10 到 28800)
GO

--设置时钟同步(主实例执行)
EXEC msdb.dbo.sp_post_msx_operation
@operation = 'SYNC-TIME',
@object_type = 'SERVER',
@specific_target_server = 'HZC\DOG'
GO

--设置开始同步(主实例执行)
EXEC msdb.dbo.sp_post_msx_operation
@operation = 'RE-ENLIST',
@object_type = 'SERVER',
@specific_target_server = 'HZC\DOG'
GO

脱离 最后再说。作业可能较久没同步或者变化较多,可以批量重新同步。存储过程 sp_resync_targetserver 先是同步一个删除命令,删除所有作业,再将所有目标服务器作业同步过来。

--重新同步指定目标服务器中的所有多服务器作业(主实例执行)
EXEC msdb.dbo.sp_resync_targetserver N'ALL'
GO

同步指令下达之后,就等着时间轮询到时执行同步。轮询时间可以设置,也可强制轮询。

(注:该存储过程似乎没用,最好在操作界面点击 “强制轮询”)

--强制轮询,手动脚本似乎无效!(主实例执行)
DECLARE @localtime VARCHAR(30) = CONVERT(VARCHAR(30),GETDATE(),120)
EXEC msdb.dbo.sp_sqlagent_probe_msx
@server_name = N'HZC\DOG',
@local_time = @localtime,
@poll_interval = 60,
@time_zone_adjustment = 480
GO

对于脱离,几个方法:

--从多服务器操作中删除当前服务器,并删除目标服务器中的作业(目标实例执行,为最后一个作业则会删除 MSX&TSX)
EXEC msdb.dbo.sp_msx_defect @forced_defection = 0
GO 

--从多服务器操作中删除当前服务器,并删除目标服务器中的作业(主/目标实例执行,为最后一个作业则会删除 MSX&TSX)
EXEC msdb.dbo.sp_post_msx_operation
@operation = 'DEFECT',
@object_type = 'SERVER',
@specific_target_server = 'HZC\DOG'
GO 

--删除作业目标服务器,并删除目标服务器中的作业(主实例执行,为最后一个作业则会删除 MSX&TSX)
EXEC msdb.dbo.sp_delete_targetserver
 @server_name = 'HZC\DOG',
 @clear_downloadlist = 1 ,--是否清除下载列表
 @post_defection = 1 --是否向目标服务器发布脱离指令
 GO

参考:企业范围的自动化管理

时间: 2024-10-09 13:43:17

SqlServer 多服务器管理(MSSQL分布式作业管理)的相关文章

EF之MSSQL分布式部署一:EFContext自定义数据库链接

不废话,上代码: 来源:http://bbs.csdn.net/topics/390823046 原文地址:EF之MSSQL分布式部署一:EFContext自定义数据库链接 /// <summary> /// 得到Entity的连接字符串 /// </summary> /// <param name="edmxFullName">Edmx的包括命名空间的全名称</param> /// <param name="server

SQLServer中服务器角色和数据库角色权限详解

SQLServer中服务器角色和数据库角色权限详解 by e-online 26. 九月 2009 18:55 coming from http://blog.csdn.net/e_online/article/details/4597957 角色 当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role).数据库角色指定了可以访问相同数据库对象的一组数据库用户. 数据库角色的成员可以分为如下几类: Windows用户组或

Redis教程(十二):服务器管理命令总结

转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/140.html 一.概述: Redis在设计之初就被定义为长时间不间断运行的服务进程,因此大多数系统配置参数都可以在不重新启动进程的情况下立即生效.即便是将当前的持久化模式从AOF切换到RDB也无需重启.    在Redis中,提供了一组和服务器管理相关的 ,其中就包含和参数设置有关的CONFIG SET/GET command. 二.相关命令列表: 命令原型 时间复杂度

Web服务器管理系列:11、注意默认的隐含共享

安装完Windows Server 2008之后默认的c/d/e...磁盘是共享的. 我们可以通过取消"Microsoft网络的文件和打印机共享"服务来阻止别人访问我们的共享文件: Web服务器管理系列:11.注意默认的隐含共享,布布扣,bubuko.com

Web服务器管理系列:4、WinPE

WinPE可以识别NTFS分区,使用WinPE可以备份/还原系统,可以重置用户密码. 首先给大家看下如何用WinPE重置密码: 放入WinPE光盘-〉启动后-〉点开始菜单-〉程序-〉系统维护-〉Windows用户密码修复 这是软件的主界面: 选择目标路径: 点击修改现有用户的密码: 输入新密码然后点"应用"按钮,密码即可轻松更换. 下面给大家看下备份功能: 打开诺顿Ghost 32: 点击"OK": 选择Local->partition->ToImage

辛星浅析Redis中的服务器管理

Redis在设计之初就被定义为可以长时间不间断运行的服务进程,因此大多数系统配置参数都可以在不重新启动的情况下立即生效.即便是当前的持久化模式从AOF切换到RDB也无需重启.在Redis中,我们还有一些和服务器管理相关的命令,我们介绍如下: (1)config    get   parameter    主要用于读取服务器的运行时参数,但是并不是所有的配置参数都可以通过该命令进行读取.其中该命令的参数接受glob风格的模式匹配规则,因此如果参数中包含模式元字符,那么所有匹配的参数都将以key/v

tomcat服务器管理界面用户名和密码忘记

tomcat服务器http://localhost:8080/ 这样访问,点击Manager App后要求输入用户名和密码才能进入管理应用界面 我忘记了用户名和密码 解决办法: 进入apache-tomcat-7.0.53\conf目录下 打开tomcat-users.xml这个文件 进行如下配置 在</tomcat-users>节点的前面 <role rolename="manager-gui"/> <user username="admin&

Web服务器管理系列:1、安装Windows Server 2008

简单了解下服务器: 1U: 2U: 3U: 在安装Windows Server 2008之前我们先了解下Windows Server 2008: Windows Server 2008是微软一个服务器操作系统的名称,它继承Windows Server 2003. Windows Server 2008 有如下几种版本: 准备好安装光盘: 进入BIOS设置: BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统&

Azure 实践系列 3:Azure AD中的服务器管理

前面一篇文章,我们了解了Azure AD对于用户管理方面的内容,接下来我们来看下Azure AD如何管理服务器.我们需要配置服务器,无论是在Azure上的虚拟机也好,还是我们在本地的实体服务器,在加入Azure AD之前必须保证网络是互通的,由于AD是无法在公网中访问的,所以我们需要配置虚拟网络来与Azure AD相连. 这里我们就拿一个新的Azure 虚拟机来举例,首先我们配置一台虚拟机,并在配置的时候选择Azure AD所在的虚拟网络. 对于虚拟机无需进行其他特殊的配置即可,创建虚拟机. 在