SQL中的发布与订阅
use master
go
select @@servername
select serverproperty('servername')
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: 配置数据库服务器名称的别称
服务器名称处使用登陆别称
因为数据库发布和订阅,不能用ip登陆,必须用服务名登陆
方法之一是改服务器的登陆别称!
首先在本机B配置连接服务器A的登陆别称:
先在【开始】-->【所有程序】中打开【SQL Server配置管理器】:
在【SQL Native Client 10.0配置(32位)】中的别名中配置,如图:
这里的别名必须和服务器B的服务器名一致也就是GUANWANG1,实际的按照自己的名字改动;
端口号是:1433
服务器是对应的服务器机器的IP地址
协议是TCP/IP
同理,在下面的【SQL Native Client 10.0配置】中也一样配置
修改服务器别名
然后在服务器A中也要配置访问本机B的别称,这一步不能少,否则后面本地订阅的时候会失败并报错,"进程无法连接到 Subscriber“PC-LLRDBA”。"
切记,这里是双向的,当初我查了好久才想起来,服务端也要配置这个......
具体的方法同上:注意别名是本机B的服务名PC-LLRDBA, IP是本机的IP,实在不知道在cmd下config一下就有了!
修改服务器别名
准备工作好了后,就进行第二步发布
登陆服务器A数据库,用别名登陆:
在【复制】-->【本地发布】中右键【新建发布】
新建发布
选择你要发布的数据库
选择发布类型:(具体选哪种,自己百度下各种的差异),我这里选事务发布
可以选择发布的对象(表,存储过程,视图等等),也可以选择部分内容,点开勾选就行了
如果没有特别筛选的,就直接下一步(比如说我只要同步Order表中2014年以后的数据,那么你可以点添加,增加筛选条件)
选择立即xxx,继续下一步
输入发布服务器的sa账户登陆密码就行了
勾选创建发布
查看发布向导选项
创建发布成功
到此发布完成,你可以刷新后查看:
在另外一台数据库上选择【复制】-->【本地订阅】,然后右键【新建订阅】
这里选择查找SQL Server发布服务器
自动弹出连接数据库对话框,输入发布服务器的服务器名称,账号密码等。
连接成功后,选中需要的订阅的数据库发布:
选择在分发服务器上运行代理
在本地新建一个同名的数据库:
配置新建数据库的相关信息
点击【与订阅服务器的连接】下面的按钮
按下图进行配置
选择定义计划:
选择代理计划
初始化订阅
初始化完成开始创建订阅
完成订阅向导
订阅就完成,然后刷新查看内容:
等过一段时间,数据同步完成后就可以查看数据了,是否一致了!
这样订阅操作就结束了。
订阅完成后,却发现本地订阅中没有内容,但是刚刚确实已经订阅成功了啊,为什么呢?
然后在发布服务器中,右键本地发布中的数据库,启动复制监视器
发现是报错了
这个原因可能有好多种:
1.订阅的时候,输入的密码输错了,我第一次就是输成了发布服务器的密码
2.对应的协议要开启
3.对应的服务要开启Sql Server Browser和Sql Server 代理(MSSQLSERVER)
这三个都检查无误了,基本上就搞定了吧!
至此,整个订阅发布的内容就结束了,感兴趣的小伙伴可以在本地安装一个虚拟机进行试验,有什么不懂的可以在底下留言~
最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。
有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行
数据前线
后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群
推荐阅读