背景描述:

发布服务器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: 配置数据库服务器名称的别称

因为数据库发布和订阅,不能用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即可。

Sql Server 2008R2 数据库发布与订阅的更多相关文章

  1. SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中

    最近,电脑重装系统之后,安装了SQL Server 2008.附加数据库文件的时候,发现无法附加,提示版本不对.想起来,原来的数据库版本是SQL Server 2008R2.低版本的数据库管理工具无法 ...

  2. SQL Server 2008R2 数据库出现“可疑”导致无法访问

    日常对Sql Server 2005关系数据库进行操作时,有时对数据库(如:Sharepoint网站配置数据库名Sharepoint_Config)进行些不正常操作如数据库在读写时而无故停止数据库,从 ...

  3. 超详细!! sql server 同步数据库 发布 订阅 跨网段 无公网ip 常见问题

    问题描述 主机1:发布端 阿里云服务器--有公网ip 主机2:订阅端 笔记本--无公网ip 数据量很小,主要是熟悉发布订阅的操作流程. 主机2仅仅作为主机1的本地备份,要求修改云服务器上数据后,能通过 ...

  4. sql server 2008R2 导出insert 语句(转载)

    转载来源: https://blog.csdn.net/zengcong2013/article/details/78648988. sql server 2008R2数据库导出表里所有数据成inse ...

  5. SQL Server 2008R2发布与订阅的配置

    使用SQL Server的发布与订阅可以将一个数据库的数据实时传送到另一个数据库中,使用这种方式与Link Server相比可以减少对数据库的连接次数.下面介绍SQL Server 2008R2发布与 ...

  6. SQL Server 2008 数据库同步的两种方式 (发布、订阅)

    参考转载: SQL Server 2008 数据库同步的两种方式 (发布.订阅) 使用Sqlserver事务发布实现数据同步

  7. 【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表

    原文:[SQL Server高可用性]数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表 经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使 ...

  8. 【SQL Server高可用性】数据库复制:SQL Server 2008R2中数据库复制

    经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使用链接服务器+触发器,来实现数据同步,但当要同步的数据表比较多,那么可以考虑用数据库复制技术,来实现数据的同步. 一.使用场景 ...

  9. 通过SQL Server 2008数据库复制实现数据库同步备份

    SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主 ...

随机推荐

  1. 腾讯加入QQ群,代码生成地址

    腾讯加入QQ群,代码生成地址 http://qun.qq.com/join.html

  2. [LeetCode系列]爬梯问题的递归解法转换为迭代解法

    有一个n阶的梯子, 你每次只能爬1阶或2阶, 请问共有多少种登顶的爬法?(正好爬完n阶, 不能多也不能少) 本题最优解是直接套用菲波那切数列即可(因为菲波那切数列的第n个元素正好等于第n-1个元素和第 ...

  3. Vim使用YouCompleteMe达到类似IDE的代码提示、补全,以及其他实用设置

    接触Linux有两年了,vim还是只会简单的操作.最近实在受不了sublime的代码提示,决定花点时间来配置下vim.本文讲自己认为方便的vim配置,称不上完美,只讲究简单实用. 使用 ctags 主 ...

  4. c# winform委托的使用

    可参考http://bbs.csdn.net/topics/390377875中使用new Action<>的使用方式,替代delegate的申明. public delegate voi ...

  5. linux文本处理命令 一

    1,cut 主要的用途在于将同一行里面的数据进行分解 cut -d ‘分隔符’ -f   ‘第几段’   和-f同时使用 -c    字符区间  截取字符区间 2,grep   cut 是在一行讯息当 ...

  6. java http头信息

    JAVA 从http请求头中获取Header信息: request.getHeader(),request.getHeaderNames(),request.getHeaders() Java获取Ht ...

  7. Linux学习笔记 -- 文件包含

    简述 简单来讲,shell 中的文件包含指的是在一个文件中引用另外一个文件.通过这种方式,我们可以将一些公用的代码封装为一个独立的文件,并在需要的时候引用它即可. 语法 . filename # 注意 ...

  8. MongoDB day04

    文件存储 文件存储到数据库的方式 1. 存储路径 将文件在本地的路径以字符串形式存储到数据库 优点 : 节省数据库空间 缺点 : 当数据库或者文件位置发生变化时文件丢失. 2. 存储文件本身 以二进制 ...

  9. Java复习——枚举与注解

    枚举 枚举就是让某些变量的取值只能是若干固定值中的一个,否则编译器就会报错,枚举可以让编译器在编译阶段就控制程序的值,这一点是普通变量无法实现的.枚举是作为一种特殊的类存在的,使用的是enum关键字修 ...

  10. oracle 存储过程 建表插值等

    建表.插值的procedure create or replace procedure CREATE_EMP is v_createsql ); v_insertsql ); begin v_crea ...