sql server 发布和订阅

Sql Server 2008R2 数据库发布与订阅

背景描述: html

发布服务器A: (远程端) , 数据库服务名: GUANWANG1数据库

订阅服务器B: (本机)   ,  数据库服务名: PC-LLRDBA服务器

须要从服务器A中数据库发布,而后在B中订阅A发布的数据库;spa

 

------------------------------------------------第一步: 准备工做------------------------------------------------.net

准备工做1: 配置机器名和数据库服务名一致3d

先检查A,B中的机器名和数据库服务名是否一致,这个很重要!代理

查看方法: code

1.检查SQL Server 的服务器名称server

1htm

2

3

4

use master

go

select @@servername

select serverproperty('servername')

 

若是查出来的两个名字不同,那就须要把他们的名字改为同样的,方法以下:

2.删除全部以前配置的publishers('old_server_name'为以前的服务名)

1

2

3

4

5

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.配置计算机名与服务名一致

1

2

3

4

5

6

7

8

9

10

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.查看服务名

1

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帐户登录密码就好了

 

 

 

 

 

 

 

 

OK,到此发布完成,你能够刷新后查看:

 

 

------------------------------------------------第三步:订阅------------------------------------------------

 

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

 

 

 

选中须要的订阅的数据库发布:

 

 

 

 

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

 

 

 

 

 点击与订阅服务器的链接下面的按钮

 

 

 

选择定义计划: 

 

 

 

 

 

 

 

 

 

 

订阅就完成,而后刷新查看内容:

 

 

 

等过一段时间,数据同步完成后就能够查看数据了,是否一致了!

 ------------------------------------------------订阅完成------------------------------------------------

 

 

订阅失败案例: 

订阅完成后,却发现本地订阅中没有内容,可是刚刚确实已经订阅成功了啊,为何呢?

 

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

 

 发现是报错了

 

 

 

 

这个缘由可能有好多种:

1:>>订阅的时候,输入的密码输错了,我第一次就是输成了发布服务器的密码

 

 

 

2:>>对应的协议要开启

 

 

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

 

 

这三个都检查无误了,基本上就搞定了吧!

 

 

还有一种报错是:"对路径"XXXXX"访问被拒绝或者没有访问路径"xxx"的权限"等,这个错误通常是用户的权限不够致使的,解决方法以下: 

使用SQL Server发布数据库快照的配置中,若是你选择了使用SQL Server代理,而SQL Server代理服务使用的登录身份不具备对存放快照文件位置的读写权限时,就会出现该错误。

解决的方法是能够修改SQL Server代理服务的登陆身份,具体作法为:程序->Sql Server Configuration Manager->在左边栏选择”SQL Server服务“->在右侧面板中"SQL Server 代理”一行上右击,选择“属性”,在弹出的对话框中选择"内置帐户“->LocalSystem便可。

 

 

 

相关文章
相关标签/搜索