之前公司的复制功能被误操作删除,导致工厂停产,这里给大家分享一下SQL复制订阅创建和备份恢复的解决方案
必要条件:首要的条件是需要安装SQL复制组件;需要SQL数据库的权限(需要多大的权限不清楚),需要保存快照的读取权限。
需要注意的事项:需要运行SQL代理;分发服务器的SQL版本在订阅、发布、分发的数据库当中是最高版本;登录SQL需要用服务器名称不能用IP地址。
本次的测试只在测试库和本地库之间,发布跟分发都在测试库,推送订阅本地库。就是说所有的操作基本均在测试库中进行。
第一步:新建发布
第二步:选择要复制的数据库
第三步:选择发布类型
这个我也不是很懂,前三个好像是单向同步,最后合并发布是双向同步。
第四步:选择订阅服务器类型
这个好像默认会帮你选择,不用改都行。
第五步:选择要复制的表
其中项目属性中可以设置一些需要复制的表属性,默认索引触发器都是勾上的。
第六步:显示复制是可能遇到的项目问题
不用操作继续下一步
第七步:显示复制是可能遇到的项目问题
点击添加就可以筛选需要复制的数据
第八步:快照代理
这里不用设置,继续下一步
第九步:快照代理
点击安全设置,然后输入账号密码,这里用的域用户,确认之后就可点击完成了。
第十步:设置发布名称
到这里一个发布就已经建立完成了,按照以上步骤操作如果提示错误,一般都是权限的问题;新建完成,分发服务器会多一个distribution表,要复制的表会多一列rowguid;SQL代理中会多一条下列命名规则:[库名]-[表名]-[发布名]-[数字]的计划作业。会生成下列的快照文件:架构 (.sch) 约束和索引 (.dri)触发器 (.trg)系统表数据 (.sys)冲突表 (.cft)数据 (.bcp)
第一步:新建订阅
第二步:选择数据库和发布
第三步:选择合并代理的位置
第一种:发布服务推送到订阅服务器,即是该订阅会在发布服务去创建和执行。
第二种:在订阅服务器中创建和执行。
第四步:添加订阅服务器
点击添加 SQL SERVER订阅服务器,填写账号密码验证即可
第五步:填写合并代理的安全性
第六步:填写合并代理的安全性
选连续运行,填写完之后直接按完成即可。
第七步:订阅设置完成
在本地数据库查看如果数据表已经同步过来,表示复制已经创建成功。
如何备份发布与订阅计划
如需要备份完整的发布与订阅计划,需要备份系统表:master(登录账号及其密码,系统配置信息,所有数据库的信息,所有用户数据库的主文件地址等,还包括许多系统存储过程,用以执行某些系统操作)、msdb(作业计划存在该表)
备份操作如下:右击该数据库->任务->备份;保存地址可以更改。
如何还原发布与订阅计划
还原操作如下:右击该数据库->任务->还原->文件和文件组;添加上之前对应的备份文件即可。
如何制定维护计划
上面知道如何备份跟还原,人为地每天手动备份这样不科学,数据库提供了维护计划功能,该功能需要安装IntegrationServices服务组件
第一步:新建维护计划
点击管理->维护计划向导
第二步:新建维护计划
第三步:新建维护计划
选择维护任务:备份数据库(完整)、“清除维护”任务(可选,目的每天不停备份文件会无限增长,该计划可以定时删除不要的备份文件)
第四步:备份数据库设置
第五步:“清除维护”任务
不需要选择报告,因为可以在日志历史中查询。
第六步:维护计划完成
针对上次因删除作业计划的快速恢复方法
上次因为删除了作业计划,导致复制无法恢复。而用上述方案的恢复需要暂停SQL代理。会影响线上作业的运行。而且花费时间较长。单单是删除了作业计划可以用下列方法恢复。
第一步:将作业计划备份出来
新增订阅的时候会生成一个:[发布服务器名]-[数据库名称]-[数据库表名称]-[订阅的服务器名]-[整数](如:FPS-ERPBK02-apstest-test-KXC-IT-PC004\SQL2008-24)作业;该作业可以在SQL Server 代理->作业中找到。将该计划的代码备份出来。
第二步:将作业计划备份还原
将上一步的文件拷贝到数据库中执行即可,有时候会提示:@schedule_uid重复,找到@schedule_uid那行注释掉即可,执行完之后,手动作业;然后启动,启动成功即可关闭
记住一定要启动,否则无法生效。完成之后系统会将之前未同步的数据进行同步。
注:复制功能本人也是现学现用,有很多还不是很明白,或者有些说的不够准备请自行修改。如有错漏请修正补充。