前言:

  前两天接到领导的任务,将一个系统A的客户数据同步到另一个系统B中,以后客户录入入口只有A系统,B系统不提供录入入口,因为各种原因不能使用接口方式A系统和B系统直接交互同步,只能通过数据库重A库同步到B库。原想通过触发器直接些过去的,但在跨服务器方面遇到种种问题,稳定性太差最终放弃,选择使用发布订阅的方式;没想到发布订阅也没有想象的那么顺利,今天就来就发布订阅遇到的问题说说解决方法,不全面只是我遇到的问题;

遇到问题:

  1、如果服务器开启了防火墙,需要添加1433端口的出站入站

  2、发布服务器发布成功后,在订阅服务器上订阅,显示订阅成功后但是在本地订阅下看不到订阅信息:

    1)可能是发布的快照路径权限问题,发布时一般默认在系统盘,可以将路径修改到可配置权限的文件夹下(见下面发布部署2.3),将路径下的repldata文件夹权限开放(注意:指定给这个文件夹设置,在上级设置不一定有效);

    2)服务名称和主机名不同

    可以通过执行一下SQL查询是否相同

    1 select @@servername
     select serverproperty('servername')

    如果不相同执行下面SQL修改

 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

    需注意的是,改过之后必须要重启一下SQL 服务器才可以

    3)主机名和其它服务器主机名称相同

    修改主机名,重启主机,按上一种方法将服务器名称改为主机名称,重启服务;

    但是这样可能还会有问题:发布订阅都成功后,但是并不能同步数据,在发布服务器看同步状态,查看详细会看到说无法连接订阅服务器,使用SQL客户端远程连接订阅服务器发现使用IP方式可以连接,但用主机名称方式不能连接;这里咱们就要检查一下订阅服务器的登录名里面,会发现有一个以原来主机名称+‘/administrator’命名的一个登录名 

  我们将这个登录名删掉,然后新建登录名

    

修改之后在发布服务器上重新初始化发布就可以了,启动复制监视查看可以看到订阅正在运行,查看数据库数据同步成功

1部署事项

  1、发布服务器跟订阅服务器必须在同一局域网内

  2、发布的时候SQL Server 需要有实际的服务器名称才能连接到服务器。不支持通过服务器别名、IP地址或者其他备用名称进行连接。因此如果当前的SQL Server的连接是IP地址的话,最好断开连接,以实际的服务器名称重新进行登录

2 发布部署

  2.1  新建发布

    展开SQL Server 2008 服务器下的 【复制】 节点,会发现有【本地发布】和【本地订阅】两个节点,右击【本地发布】节点,选择【新建发布】

    

  2.2  发布向导

    1、如果服务器第一次进行发布设置,会弹出【发布向导】对话框

    

    2、设置【分发服务器】,选择第一个

    

  2.3  快照文件夹

    点击【下一步】,会出现设置【快照文件夹】对话框,我们选择默认

    

  2.4  发布数据库

    点击【下一步】,选择要发布的数据库

    

  2.5  发布类型

    点击【下一步】,选择【发布类型】,我们选择 【事务发布】。

  

  2.6  选择发布对象

    点击【下一步】,选择数据库中的发布对象,选择所需的表、视图,也可选择所有的表

    

  2.7  项目问题

    点击【下一步】,SQL Server 要求已发布存储过程引用的所有对象(例如,表和用户定义函数)在订阅服务器上可用。如果没有将被引用对象作为此发布中的项目发布,则必须在订阅服务器上手动创建这些对象。(默认)

    

  2.8 筛选表行

    1、点击【下一步】,进入【筛选表行】对话框:

    

    2、如果需要筛选表行点击【添加】就会出现如下的筛选器对话框,可在筛选语句中添加SQL查询语句

    

  2.9  快照代理

    不需要筛选,即所有数据全部同步,点击【取消】后,直接【下一步】,进入【快照代理】设置对话框,这里有两个选择一个是立即创建快照,一个是指定一个计划(比如可以指定xxx天xxx时间运行),我们选择第一个

    

  2.10  代理安全性

    1、点击【下一步】进入【代理的安全性】设置

    

    2、点击【安全性设置】,我们选择 SQL SERVER 用户

    

  2.11  向导操作

    1、点击【确定】 后,返回 【代理安全性】设置对话框,继续点击【下一步】

    

    2、点击【下一步】,我们给发布进行命名为:FaBu_TEST

    

    3、点击【完成】,就会创建发布,并会显示创建发布的结果

    

  2.12  设置文件夹权限

    发布创建完成后设置C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL路劲下repldata文件权限

    

  

3 订阅部署

  3.1  新建订阅

    右键点击【本地订阅】节点,打开,【新建订阅】对话框

    

  3.2  订阅向导

    1、弹出新建订阅向导点

    

    2、击下一步,选择发布服务器,选择查找SQL Server 发布服务器

    

    3、弹出链接到服务器,链接到发布服务器。

    注:不支持通过服务器别名、IP地址等名链接,需用服务器实际名称进行链接

    

    4、点击链接 ,选择要为其创建一个或多个订阅的发布, 我们选择发布服务器WIN-XXX 中的数据库发布 FaBu_TEST,然后点击【下一步】

    

  3.3  分发代理位置

    在【分发代理位置】对话框中,选择第一项,点击【下一步】

    

  3.4  订阅服务器

    在【订阅服务器】对话框中,选择新建数据库,或者提前建好一个新数据库选择这个数据库

    

  3.5  分发代理安全性

    1、在【分发代理安全性】对话框中,我们点击“...”,进入安全性设置,我们选则的是 SQL 帐户

    

    2、输入订阅服务器SQL Server的登陆名和密码

    

  3.6  同步计划

    点击【下一步】,设置代理计划,我们选择默认的“连续运行”

    

  3.7  初始化订阅

    点击【下一步】,进入【初始化订阅】对话框,选择 “立即” 初始化

    

  3.8  向导操作

    1、在【初始化订阅】点击【下一步】:选创建订阅

    

    2、点击【下一步】:完成向导

    

    3、点击【完成】,就会创建订阅,并显示创建结果

    

SQLServer2008R2 发布订阅及相关问题解决办法的更多相关文章

  1. 使用 IntelliJ IDEA 2016和Maven创建Java Web项目的详细步骤及相关问题解决办法

    Maven简介 相对于传统的项目,Maven 下管理和构建的项目真的非常好用和简单,所以这里也强调下,尽量使用此类工具进行项目构建, 它可以管理项目的整个生命周期. 可以通过其命令做所有相关的工作,其 ...

  2. oracle表空间不足相关问题解决办法

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  3. ionic 相关问题解决办法记录

    1.npm无法安装模块 报code E400错误 解决办法: 删除npmrc文件. 注意:不是nodejs安装目录npm模块下的那个npmrc文件,而是在C:\Users\{账户}\下的.npmrc文 ...

  4. redis源码分析之发布订阅(pub/sub)

    redis算是缓存界的老大哥了,最近做的事情对redis依赖较多,使用了里面的发布订阅功能,事务功能以及SortedSet等数据结构,后面准备好好学习总结一下redis的一些知识点. 原文地址:htt ...

  5. SQLServer2008R2复制发布订阅(含局域网跨网段)调试总结

    需要注意的问题点: 一.发布服务器A和订阅服务器B都在同一个网段的局域网内 1.两台服务器的SQLServer版本必须一致. 2.两服务器之间访问没难度,直接就可以搜索到. 3.注意请求订阅和推送订阅 ...

  6. WPF中不规则窗体与WebBrowser控件的兼容问题解决办法

    原文:WPF中不规则窗体与WebBrowser控件的兼容问题解决办法 引言 这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序. ...

  7. Redis基础知识 之——发布/订阅

    一.说明: 订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者).而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅 ...

  8. kafka 基础知识梳理-kafka是一种高吞吐量的分布式发布订阅消息系统

    一.kafka 简介 今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 ...

  9. Linux(6)- redis发布订阅/持久化/主从复制/redis-sentinel/redis-cluster、nginx入门

    一.redis发布订阅 Redis 通过 PUBLISH .SUBSCRIBE 等命令实现了订阅与发布模式. 其实从Pub/Sub的机制来看,它更像是一个广播系统,多个Subscriber可以订阅多个 ...

随机推荐

  1. Prison Break

    Prison Break 时间限制: 1 Sec  内存限制: 128 MB提交: 105  解决: 16[提交][状态][讨论版] 题目描述 Scofild又要策划一次越狱行动,和上次一样,他已经掌 ...

  2. http://codeforces.com/contest/536/problem/B

    B. Tavas and Malekas time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  3. VB.NET 中 ComboBox 如何清除选项--- 使用Dataset 赋值 DataSource 的时候

    如题: 在 使用Dataset 赋值 DataSource 的时候,网络上很多都是:ComboBox2.DataSource = Null 然并卵,很高兴告诉大家:Null 在VB.NET中是没用的: ...

  4. 使用VLC创建组播流

    vlc既是一个播放器,又可以成为一个流媒体服务器.最近需要做udp组播播放相关的东西,需要先在本地搭建一个udp组播服务器,因为机器上本来就装有vlc,所以就用它了. 第一步: 点击媒体->流 ...

  5. 有关 Hybrid 开发模式实践总结

    前言 随着公司业务不断发展,移动开发项目越来越多,项目任务时间紧,我们内部开发流程是以项目为导向,有别于一般公司对产品不断迭代的做法,但移动端开发人员资源有限,需要在不同项目之间做业务场景切换开发,就 ...

  6. redis的sentinel主从切换(failover)与Jedis线程池自动重连

    本文介绍如何通过sentinel监控redis主从集群,并通过jedis自动切换ip和端口. 1.配置redis主从实例 10.93.21.21:6379 10.93.21.21:6389 10.93 ...

  7. JavaScript前端和Java后端的AES加密和解密

    在实际开发项目中,有些数据在前后端的传输过程中需要进行加密,那就需要保证前端和后端的加解密需要统一.这里给大家简单演示AES在JavaScript前端和Java后端是如何实现加密和解密的. 直接上代码 ...

  8. iOS四种多线程(swift和oc)

    在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项.当然也会给出几种多线程的案例,在实际使用中感受它们的区别.还有一点需要说明的是,这篇文章将会使用 Swift 和 ...

  9. python 解析xml

    在工作中很多时候都要用到xml,使用这个时候难免会设计到解析他,然后就研究了一下python解析xml问题,看了很多东西,python有很多解析xml的包,但是也折腾我好一段时间,最后选择了这个方法. ...

  10. EF框架搭建小总结--ModelFirst模型优先

    前言:去年刚工作的时候,也是刚刚正式接触.net,当时了解了EF以及三种开发模式,Database First.Model First .Code First.公司用的开发模式是Database Fi ...