转自:http://www.cnblogs.com/gaizai/p/3328511.html

一.本文所涉及的内容(Contents)

  1. 本文所涉及的内容(Contents)
  2. 背景(Contexts)
  3. 解决方案(Solution)
  4. 搭建过程(Process)
  5. 注意事项(Attention)
  6. 参考文献(References)

二.背景(Contexts)

  搭建SQL Server复制的时候,如果网络环境是局域网内,通过主机名就可以实现了,但是如果是跨网段、跨机房异地搭建复制的时候就需要注意了,因为SQL Server复制不支持通过IP连接分发服务器,那有什么办法解决跨网段、跨机房的问题呢?

三.解决方案(Solution)

  在跨网段、跨机房进行SQL Server复制的时候需要区分两种情况:一种是外网IP的1433端口对应了这台机器SQL Server的数据库端口;另外一种情况是外网IP对应SQLServer机器的端口不是1433;下面是几种解决方案:

A. 如果外网IP端口是1433,可以在Windows的host文件中指定IP地址与主机名的对应关系,主机名必须跟真实的主机名一样?

B. 因为你的外网IP端口不是1433,所以你无法在host文件中跟IP地址一起指定端口;这种情况下,如果条件允许(安全性和端口数),你可以在防火墙中开放外网IP的1433端口对应这个发布服务器的1433端口,并且限制某个IP可以访问这个端口,程序等访问发布数据库就使用另外的21433端口,保证了1433端口的安全;又可以解决端口映射问题,可以画张图解释;

(Figure1:逻辑结构图)

C. 另外一种方案是在SQL Server配置管理器里建立一个SQL Server别名,这个别名需要跟主机名一样,不需要启用SQL Server Browser服务;

四.搭建过程(Process)

(一) 环境信息

系统环境:Windows Server 2008 + SQL Server 2008

发布服务器:192.168.1.101,1924,192.168.1.101,1433,服务器名称:USER-H2B2A89PEK

分发服务器:与发布服务器同一台机器

订阅服务器:192.168.1.102,1433,服务器名称:QuZhoushiwei105

发布数据库:Task

订阅数据库:TaskSubscribe

数据库帐号:ReplicationUser/ ReplicationPassword

(二) 搭建步骤

  上面的发布服务器的外网IP开通了两个端口,一个是默认的1433,一个是1924,如果是默认的1433,可以通过host文件,而如果只有端口1924的话就只能通过SQL Server别名方式实现,这里为了做测试就一起开通了这2个端口了。

A. 下面是通过host文件的形式创建订阅的具体步骤:

1) 在发布服务器上创建发布,具体操作可以参考:SQL Server 复制事务发布,只有搭建成功之后下面的步骤才能进行;

2) 设置订阅服务器C:\Windows\System32\drivers\etc目录的host文件,添加分发服务器(我的环境是发布服务器与分发服务器是一起的,所以这里指定的是发布服务器的地址)信息:192.168.1.101 USER-H2B2A89PEK

3) 设置分发服务器C:\Windows\System32\drivers\etc目录的host文件,添加订阅服务器信息:192.168.1.102 QuZhoushiwei105

4) 在订阅服务器上创建订阅,具体步骤如下:

(Figure2:连接发布服务器)

(Figure3:成功连接发布服务器)

(Figure4:选择推送订阅)

(Figure5:选择订阅数据库)

(Figure6:推送订阅帐号密码)

(Figure7:代理计划)

(Figure8:初始化)

(Figure9:成功后的订阅信息与作业)

(Figure10:新建订阅的状态信息)

B. 下面是通过SQL Server别名的形式创建订阅的具体步骤:

1) 在发布服务器上创建发布,具体操作可以参考:SQL Server 复制事务发布,只有搭建成功之后下面的步骤才能进行;

2) 在订阅服务器上创建分发服务器(我的环境是发布服务器与分发服务器是一起的,所以这里指定的是发布服务器的地址)的别名;

(Figure11:订阅服务器上的别名)

  在分发服务器上,如果别名的设置包括:SQL Native Client 10.0 配置(32位)和SQL Native Client 10.0 配置,需要都设置订阅服务器的别名,如果没有像Figure13那样进行设置,

(Figure12:分发服务器上的别名)

(Figure13:分发服务器上的别名)

3) 接下来的步骤按照Figure2到Figure8进行就可以了,同样,最后一样可以达到Figure9、Figure10的效果;

五.注意事项(Attention)

1. 使用请求订阅,分发作业是在订阅服务器上创建的;使用推送订阅,分发作业是在分发服务器上创建;

2. 在发布服务器上创建发布的时候,如果SQL Server数据库实例名与服务器名不一致,将会出现下面的错误:

(Figure14:发布错误)

在订阅服务器上创建订阅的时候,如果SQL Server数据库实例名与服务器名不一致,将会出现下面的错误:

(Figure15:订阅错误)

3. 可以通过下面的SQL脚本修改不一致的问题,修改之后记得重启SQL Server服务才能生效;

/*
SQL Server数据库实例名与服务器名不一致的解决办法
*/
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. 分发服务器上的快照文件会给删除?

CareySon:After the snapshot is applied at all Subscribers, replication cleanup deletes the associated .bcp file for the initial snapshots automatically.

5. 如果通过修改host文件部署发布订阅,你必须使用推送订阅模式,如果你使用请求订阅模式,因为你无法读取快照文件,将会报下面的错误:

(Figure16:请求订阅无法读取快照文件错误信息)

使用别名的形式部署发布订阅,同样会存在相同的问题,CareySon在Azure上通过开通相关权限的方式可以使用请求订阅方式,但是过程比较复杂,这里就不做讨论了;

6. 如果只在订阅服务器的host文件上指定了分发服务器(这里指定是发布服务器,因为我的发布服务器与分发服务器是一起的),没有在分发服务器的host文件上指定订阅服务器地址,将会发生下面的错误:

(Figure17:发布服务器连接不上订阅服务器)

7. 如果服务器同时存在“SQL Native Client 10.0 配置(32位)”和“SQL Native Client 10.0 配置”,测试发现“SQL Native Client 10.0 配置(32位)”设置的别名是提供给:查找SQL Server发布服务器使用的,错误信息类似Figure19所示;“SQL Native Client 10.0 配置”设置的别名是提供给:分发服务器作业推送到订阅服务器使用的,错误信息类似Figure17所示;具体原因不清楚,求科普;

(Figure18:别名)

8. 在分发服务器和订阅服务器上设置别名的时候,别名应该跟服务器的实例名要一致,不然会报下面的错误:

(Figure19:错误信息)

六.参考文献(References)

SqlServer数据库同步方案详解(包括跨网段)

(2)sql server 跨网段复制的更多相关文章

  1. SQL Server 跨网段(跨机房)FTP复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建过程(Process) 注意事项(Attention) 参考文献(References) ...

  2. SQL Server跨网段(跨机房)FTP复制

    SQL Server跨网段(跨机房)FTP复制 2013-09-24 17:53 by 听风吹雨, 273 阅读, 0 评论, 收藏, 编辑 一. 背景 搭建SQL Server复制的时候,如果网络环 ...

  3. Step5:SQL Server 跨网段(跨机房)FTP复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建过程(Process) 注意事项(Attention) 参考文献(References) ...

  4. SQL Server 跨网段(跨机房)通过备份文件初始化复制

    笔者最近碰到了需要搭建跨网段的SQL Server复制,实际的拓扑结构如下草图所示: 发布端A服务器位于CDC机房中 订阅端B服务器位于阿里云 因为SQL Server复制不支持通过IP连接分发服务器 ...

  5. (1)sql server 同网段复制

    转自:https://blog.csdn.net/hliq5399/article/details/51678774(文末有复制系列文章链接) 一.背景 在复制的运用场景中,事务发布是使用最为广泛的, ...

  6. SQL Server跨库复制表数据错误的解决办法

    SQL Server跨库复制表数据的解决办法   跨库复制表数据,有很多种方法,最常见的是写程序来批量导入数据了,但是这种方法并不是最优方法,今天就用到了一个很犀利的方法,可以完美在 Sql Serv ...

  7. SQL Server 跨库复制表方法小笔记

    insert into tableA (column1,column2.....) SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=127. ...

  8. SQL Server 跨网段(跨机房)复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搭建过程(Process) 注意事项(Attention) 参考 ...

  9. Step4:SQL Server 跨网段(跨机房)复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搭建过程(Process) 注意事项(Attention) 参考 ...

随机推荐

  1. redis bgsave 内存不够

    客户反应很慢,程序玩不了,登录服务器,查看,发现cpu/io正常,内存也还有,但是负载很离谱的飙高到了30多,查原因: 因为用了redis,最近redis数据增长量很大,而且优化过,怀疑是redis问 ...

  2. Atitit.收银机小票打印功能的设计  java php c#.net版本

    Atitit.收银机小票打印功能的设计  java php c#.net版本 1. 1. 打印方式有4种:1 1.1. 1.1. 一是不经过任何修改,直接调用javascript中的window.pr ...

  3. 从DTS到驱动加载的过程分析

    http://blog.csdn.net/iefswang/article/details/40543733 http://www.linuxidc.com/Linux/2013-07/86839.h ...

  4. jquery的val()

    jQuery 属性操作 - val() 方法 jQuery 属性操作参考手册 实例 设置输入域的值: $("button").click(function(){ $(": ...

  5. 李洪强iOS开发之OC[007] - 李洪强iOS开发之类的声明和实现

    类的声明和实现 类是一类具有相同特征和共同行为的集合 小轿车   大卡车   挖掘机    (车) 车类 类名: Car 属性: 颜色  速度  轮字数 共同行为: 跑  停  载人 对象: 是类的具 ...

  6. Chrome插件之一键保存网页为PDF1.1发布

    最新版本:V1.1 下载地址:http://download.csdn.net/detail/bdstjk/5722317 http://pan.baidu.com/share/link?sharei ...

  7. windows下安装JDK和Tomcat

    一.安装JDK 1.安装 JDK当前最高版本为1.7. 下载并运行JDK 1.7安装程序jdk-7u25-windows-i586.exe,直接安装到C盘(也可以在其它盘,但文件名一定要是英文名),其 ...

  8. jq中写PHP

    var id="$defaultId"; if(!id){ $("#tag_url").addClass("div_display_none" ...

  9. 微信小程序 模块化

    模块化也就是将一些通用的东西抽出来放到一个文件中,通过module.exports去暴露接口.我们在最初新建项目时就有个util.js文件就是被模块化处理时间的 /** * 处理具体业务逻辑 */ f ...

  10. 解决ionic 2载入速度慢的问题

    1.ionic build android  --prod 使用生产环境的服务器 (最关键部分) [--production-mode=y,n]  .................  Tell Io ...