设为首页 收藏本站
查看: 655|回复: 0

[经验分享] Sql Server 2008R2 数据库发布与订阅

[复制链接]

尚未签到

发表于 2017-7-13 09:01:53 | 显示全部楼层 |阅读模式
  背景描述:
  发布服务器A: (远程端) , 数据库服务名: GUANWANG1
  订阅服务器B: (本机)   ,  数据库服务名: PC-LLRDBA
  需要从服务器A中数据库发布,然后在B中订阅A发布的数据库;
  ------------------------------------------------第一步: 准备工作------------------------------------------------
  准备工作1: 配置机器名和数据库服务名一致
  先检查A,B中的机器名和数据库服务名是否一致,这个很重要!
  查看方法:
  1.检查SQL Server 的服务器名称



use master
go
select @@servername
select serverproperty('servername')

  如果查出来的两个名字不一样,那就需要把他们的名字改成一样的,方法如下:
  2.删除所有之前配置的publishers('old_server_name'为之前的服务名)



select * from msdb.dbo.MSdistpublishers
DELETE FROM msdb.dbo.MSdistpublishers
select * from msdb.dbo.MSdistpublishers
exec sp_droplinkedsrvlogin 'old_server_name',null
exec sp_dropserver 'old_server_name', 'droplogins'

  执行完后,重启SQL Server服务
  3.配置计算机名与服务名一致



USE master
GO
if serverproperty('servername') <> @@servername   
begin   
declare @server sysname   
set   @server = @@servername   
exec sp_dropserver @server = @server   
set   @server = cast(serverproperty('servername') as sysname)   
exec sp_addserver @server = @server , @local = 'LOCAL'   
end

  4.查看服务名



sp_helpserver

  准备工作2: 配置数据库服务器名称的别称
DSC0000.png

  因为数据库发布和订阅,不能用ip登陆,必须用服务名登陆
  方法之一是改服务器的登陆别称!
  首先在本机B配置连接服务器A的登陆别称:
  先在[开始],[所有程序]中打开[SQL Server配置管理器]:
DSC0001.png

  在[SQL Native Client 10.0配置(32位)]中的别名中配置,如图:
DSC0002.png

  这里的别名必须和服务器B的服务器名一致也就是GUANWANG1,实际的按照自己的名字改动;
  端口号是:1433
  服务器是对应的服务器机器的IP地址
  协议是TCP/IP
  同理,在下面的[SQL Native Client 10.0配置]中也一样配置下!
DSC0003.png

  然后在服务器A中也要配置访问本机B的别称,这一步不能少,否则后面本地订阅的时候会失败并报错,"进程无法连接到 Subscriber“PC-LLRDBA”。 "
  切记,这里是双向的,当初我查了好久才想起来,服务端也要配置这个......
  具体的方法同上:注意别名是本机B的服务名PC-LLRDBA, IP是本机的IP,实在不知道在cmd下config一下就有了!
DSC0004.png

  准备工作好了后,就进行第二步发布
  ------------------------------------------------第二步:发布------------------------------------------------
  登陆服务器A数据库,用别名登陆:
  在[复制],[本地发布]中右键新建发布
DSC0005.png

DSC0006.png

  选择你要发布的数据库
DSC0007.png

  选择发布类型:(具体选哪种,自己百度下各种的差异),我这里选事务发布
DSC0008.png

  可以选择发布的对象(表,存储过程,视图等等),也可以选择部分内容,点开勾选就行了
DSC0009.png

  如果没有特别筛选的,就直接下一步(比如说我只要同步Order表中2014年以后的数据,那么你可以点添加,增加筛选条件)
DSC00010.png

  选择立即xxx,继续下一步
DSC00011.png

  输入发布服务器的sa账户登陆密码就行了
DSC00012.png

DSC00013.png

DSC00014.png

DSC00015.png

  OK,到此发布完成,你可以刷新后查看:
DSC00016.png

  ------------------------------------------------第三步:订阅------------------------------------------------
DSC00017.png

  这里选择查找SQL Server发布服务器
DSC00018.png

DSC00019.png

  选中需要的订阅的数据库发布:
DSC00020.png

DSC00021.png

  在本地新建一个同名的数据库:
DSC00022.png

DSC00023.png

  点击与订阅服务器的连接下面的按钮
DSC00024.png

DSC00025.png

  选择定义计划:
DSC00026.png

DSC00027.png

DSC00028.png

DSC00029.png

DSC00030.png

  订阅就完成,然后刷新查看内容:
DSC00031.png

  等过一段时间,数据同步完成后就可以查看数据了,是否一致了!
  ------------------------------------------------订阅完成------------------------------------------------
  订阅失败案例:
  订阅完成后,却发现本地订阅中没有内容,但是刚刚确实已经订阅成功了啊,为什么呢?
DSC00032.png

  然后在发布服务器中,右键本地发布中的数据库,启动复制监视器
DSC00033.png

  发现是报错了
DSC00034.png

  这个原因可能有好多种:
  1:>>订阅的时候,输入的密码输错了,我第一次就是输成了发布服务器的密码

  2:>>对应的协议要开启
DSC00035.png

  3:>>对应的服务要开启Sql Server Browser和Sql Server 代理(MSSQLSERVER)
DSC00036.png

  这三个都检查无误了,基本上就搞定了吧!
  还有一种报错是:"对路径"XXXXX"访问被拒绝或者没有访问路径"xxx"的权限"等,这个错误一般是用户的权限不够导致的,解决方法如下:
  使用SQL Server发布数据库快照的配置中,如果你选择了使用SQL Server代理,而SQL Server代理服务使用的登陆身份不具有对存放快照文件位置的读写权限时,就会出现该错误。
  解决的方法是可以修改SQL Server代理服务的登录身份,具体做法为:程序->Sql Server Configuration Manager->在左边栏选择”SQL Server服务“->在右侧面板中"SQL Server 代理”一行上右击,选择“属性”,在弹出的对话框中选择"内置账户“->LocalSystem即可。
DSC00037.png

DSC00038.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-393371-1-1.html 上篇帖子: 关于SQL SERVER数据库学习总结 下篇帖子: 使用SQL Server 发送邮件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表