问题描述

主机1:发布端

阿里云服务器--有公网ip

主机2:订阅端

笔记本--无公网ip

数据量很小,主要是熟悉发布订阅的操作流程。

主机2仅仅作为主机1的本地备份,要求修改云服务器上数据后,能通过sql server的发布订阅功能将本地数据同步。

底下没有一步一步介绍,一步一步的,可以看下面这篇

https://blog.csdn.net/u012861467/article/details/76411216

----------------------------------------------------------------------------------------------

问题1

阿里云的sql server配置好后,无法使用本地sql server客户端远程登录。

检查以下几点

1.要在阿里云的控制台中的防火墙,打开阿里云的1433端口(默认的sql server访问端口)

这点很重要,好多教程里没有提到!!!

2.要把两台主机的sql manager中的sql server服务中的sql server代理打开(原本是禁用状态)

3.远端服务器要开启sql server用户名密码登录方式,并且设置好代理账号和密码

到这一步,应该可以在笔记本的sql server通过ip地址,和刚刚设置的代理账户和密码登录进云服务器了。

--------------------------------------------------------------------------------------

问题2

发布和订阅流程

要首先在云端sql server客户端的

复制---发布---新建发布

1.选择哪种发布方式

这点可以自己查询四种发布的区别

要注意:事务发布时,被发布的表要有主键

2.如何连接发布端

网上一般推荐是在云端和本地端都新建一个用户名,密码一样的windows账户,然后这里选择在windows账户下运行。

我这里使用sql server登录名

这里注意---登录名是sql server的登录名(就是一般是sa的那个)

-------------------------

以上是发布端

-------------------------

订阅端

1.使用别名

在这一步选择发布服务器时,要使用实际的服务器名称(使用windows方式登录时的名称),不能使用ip地址。

这里要在订阅服务器中添加发布服务器的别名,具体操作看下面

https://blog.csdn.net/u010457730/article/details/97276313

2.推送订阅还是请求订阅

这里我有个不懂的问题,之后会讲到。

3.连接到分发服务器

这里注意,要填写分发服务器的sql server登录名。

是登录名,sa那个

登录名不是服务器名,这点切记。

到这一步时,查看一下订阅服务器的同步状态

看看是否打钩了----这代表前面的设置正确,订阅服务器能访问到发布端。

本人一开始因为设置时填写错了用户名,在查看同步状态这里还是报错的。

--------------------------------------------------------------------------------

接下来,可以看看订阅服务器的数据是不是被同步了,如未同步,看看订阅端的作业历史记录

有可能还是报错

但是这个报错信息是什么玩意嘛???

“复制代理遇到问题。有关详细信息,请参阅上一个作业步骤历史记录消息或复制监视器”

原来要在发布端找具体错误信息。。。

启动发布端的复制监视器

在左侧选好具体的发布后,双击右侧中所有订阅中的错误的订阅,查看具体报错

真相大白--

由于出现操作系统错误 3,进程无法读取文件D:\XXXX\X.pre

原因原来是--这个路径是发布端存放快照文件的位置,但是由于不是网络文件夹,不能被访问。

这里提供一种简单的解决办法

参照这位的做法

https://www.cnblogs.com/mrray/archive/2011/03/17/1987123.html

直接把发布端的快照文件夹--名称为repldata的拷贝到订阅端的某个文件位置

再在订阅端修改快照位置

复制--本地订阅---具体的订阅---右键---属性

把快照文件夹位置修改为本地的那个位置。

很神奇的是,只需要修改一次就好。

到这一步,我的问题就解决了,以下是几点问题和思考

1.坑很多,但多查询相关资料,总是能够解决的。这个信心是一次次解决问题中锻炼出来的。

2.自身理论基础欠缺时,一些配置性操作就容易出问题。比如说不了解发布订阅的具体机制,就很难想到出现快照文件夹无法访问这个问题。

3.我的情景比较特殊,一台有公网ip,一台没有。我在网上看到的情况,一般要么是局域网,要么两台主机都是有公网ip的(这意味着发布端,订阅端都能用唯一的ip地址访问对方)。所以我一直怀疑我这种网络结构从原理上就不能使用发布订阅这种方式(因为发布端无法“找到”订阅端)。这也是我在配置中选择了从订阅端运行代理,因为订阅端是肯定能“找到”有公网ip的发布端的。这个问题还要细研究。

4.这四种发布-订阅的方式有什么区别?快照文件夹是什么原理?这是两个需要搞清楚的问题。

5.sql server这个这么常见的功能为什么如此多的坑。。。可能还是我太菜了。但起码这个问题是解决了,我又成长了一点点。

超详细!! sql server 同步数据库 发布 订阅 跨网段 无公网ip 常见问题的更多相关文章

  1. 超详细SQL SERVER 2016跨网段和局域网发布订阅配置图解和常见问题

    原文:超详细SQL SERVER 2016跨网段和局域网发布订阅配置图解和常见问题 转载标明出处:http://blog.csdn.net/u012861467 前方高能,要有点耐心,图片较多,注意在 ...

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

    背景描述: 发布服务器A: (远程端) , 数据库服务名: GUANWANG1 订阅服务器B: (本机)   ,  数据库服务名: PC-LLRDBA 需要从服务器A中数据库发布,然后在B中订阅A发布 ...

  3. 关于SQL SERVER 2008 R2发布订阅功能

    实现功能:主服务器维护数据的变更,从服务器需要时同步主服务器的数据. 配置:主从服务器均为SQL SERVER 2008 R2. 实现方法: 预备: 1.主从服务器需建立同一账户名及密码的账户(当时我 ...

  4. SQL数据同步之发布订阅

    发布订阅份为两个步骤:1.发布.2.订阅.首先在数据源数据库服务器上对需要同步的数据进行发布,然后在目标数据库服务器上对上述发布进行订阅.发布可以发布一张表的部分数据,也可以对整张表进行发布.下面分别 ...

  5. SQL Server 2008复制发布订阅(数据同步)

    数据库同步问题 1.有一台主数据库服务器A和另外一台数据库服务器B,客户端首先访问数据库B,当B数据库服务器挂掉时就访问A,当对数据库B进行DML操作时,同时对A进行更新,如果A与B之间通讯失败,则将 ...

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

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

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

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

  8. SQL Server 2008数据库同步配置

    以下内容转载于网络,个人做了简单的修改.          数据库同步可以是同一个服务器之间不同数据库之间数据同步,也可以是局域网内不同服务器间数据库的同步. 下面具体说一下步骤,首先我们说一下发布服 ...

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

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

随机推荐

  1. 【Offer】[30] 【包含min函数的栈】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min.push及pop的时间复杂度都是0(1). ...

  2. 集成学习方法Boosting和Bagging

    集成学习是通过构架并结合多个学习器来处理学习任务的一种思想, 目前主要分为两大类:Boosting和Bagging. 对于任意一种集成方法, 我们都希望学习出来的基分类器具有较高的准确性和多样性, 基 ...

  3. Python编译器及Sublime Text3安装及开发环境配置

    1.初学Python,你需要一个好的开发编辑器 在选择Python编辑器时,可能纠结于那个Python的版本更好一些,在Python2.x和Python3.x版本中, Python3.x版本更好一些, ...

  4. linux下创建git代码

    1.创建一个新的repository: 先在github上创建并写好相关名字,描述. $cd ~/hello-world        //到hello-world目录 $git init       ...

  5. #umn 来美国近一个月的简单见闻

    时光如梭,到美国已经快要一个月了,从最初12+4飞行的劳累,到一开始每天吃了上顿没下顿的担心,到后来开始上课的不适,现如今生活已经基本步入了正轨,每天上上课写写作业,去rec center打打球健健身 ...

  6. FreeSql (九)删除数据

    删除是一个非常危险的操作,FreeSql对删除支持并不强大,仅支持了单表有条件的删除方法. 不想过多的介绍拉长删除数据的系列文章,删除数据的介绍仅此一篇. 若Where条件为空的时候执行方法,Free ...

  7. 【原创】我们还需要学jQuery吗?

    引言 最近撸Vue的项目,感觉的有点心累.恰巧近日,有读者来信,就是想咨询一下 烟哥,现在还有必要学习jQuery么? 我明白,现在MVVM框架逐渐占据了主要市场,很多老项目也逐渐的从jQuery转向 ...

  8. C++ 基础中的基础 ---- 引用

    C++ 基础中的基础 ---- 引用 引用的概念:引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量.比如: int n ...

  9. [AWS] 02 - Pipeline on EMR

    Data Analysis with EMR. Video demo: Run Spark Application(Scala) on Amazon EMR (Elastic MapReduce) c ...

  10. [Leetcode] 第306题 累加数

    一.题目描述 累加数是一个字符串,组成它的数字可以形成累加序列. 一个有效的累加序列必须至少包含 3 个数.除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和. 给定一个只包含数字 ' ...