SQL Server 2008 R2的发布订阅配置实践

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

    纸上得来终觉浅,绝知此事要躬行。搞技术尤其如此,看别人配置SQL SERVER的复制,发布-订阅、镜像、日志传送者方面的文章,感觉挺简单,好像轻轻松松的,但是当你自己去实践的时候,你会发现还真不是那么一回事,毕 竟环境不同、数据库版本或经验关系,你实践的时候会或多或少碰到一些问题,有可能人家是多次实践后,绕开了那些“坑”,毕竟写文章是事后总结,人家台上一 分钟,台下十年功。闲话不扯了,进入正题,本文虽然简单,但是趁现在有时间,也记录一下前几天配置Replication的发布订阅。

环境:发布服务器A:Windows Server 2008 R2 Standard, SQL SERVER 2008 R2, 订阅服务器B:Windows Server 2003 R2 Standard X64 Edition Service Pack2, SQL SERVER 2008 R2 Standard

开始前,你必须确保实例已经安装了Replication Componets,否则会报错,详情请见MS SQL 2008 发布订阅配置遇到的错误,在服务器A上,打开SSMS,右键单击Local Publication(本地发布),选择New Publication(新建发布)

                                          

clipboard

                                                        (图1)

然后就进入新建发布的向导了,如果第一次新建发布,有可能出现下面图2、图3,否则不会遇到这些界面

clipboard

                                                        (图2)

不建议将快照文件夹放在C盘,最好设置在其它非系统磁盘。如果下面你不用UNC路径并且共享改目录,必须设置可读权限,否则后面你可能会碰到一个让你棘手的错误,具体参见MS SQL 2008 发布订阅配置错误总结

clipboard

 

                                                       (图3)

选择你要发布的数据库,这里只能单选,不能选择多个数据库。

clipboard[10]

                                                        (图4)

接下来,关于选择发布类型,根据你的实际情况,选择合适的发布类型

快照复制:快照复制将数据以特定时刻的瞬时状态分发,而不监视对数据的更新。发生同步时,将生成完整的快照并将其发送到订阅服务器。  当符合以下一个或多个条件时,使用快照复制本身是最合适的: 

    1: 很少更改数据。 
    2: 在一段时间内允许具有相对发布服务器已过时的数据副本。 

    3: 复制少量数据。 
    4: 在短期内出现大量更改。 
 
事务复制:事务复制通常用于服务器到服务器环境中, 在以下各种情况下适合采用事务复制: 
 1: 希望发生增量更改时将其传播到订阅服务器。 
 2: 从发布服务器上发生更改,至更改到达订阅服务器,应用程序需要这两者之间的滞后时间较短。  
  3: 应用程序需要访问中间数据状态。 例如,如果某一行更改了五次,事务复制将允许应用程序响应每次更改(例如,激发触发器),而不只是响应该行最终的数据更改。

  4:发布服务器有大量的插入、更新和删除活动。 
 5:发布服务器或订阅服务器不是 SQL Server 数据库(例如,Oracle)。 

具有可更新订阅的事务发布:

事务复制支持在订阅服务器中通过可更新订阅和对等复制来进行更新。下面介绍两种可更新订阅:

  • 立即更新。必须连接发布服务器和订阅服务器才能在订阅服务器中更新数据。

  • 排队更新。不必连接发布服务器和订阅服务器即可在订阅服务器中更新数据。可以在订阅服务器或发布服务器脱机时进行更新。

在订阅服务器中更新数据时,首先将数据传播到发布服务器,然后再传播到其他订阅服 务器。如果使用立即更新,将使用两阶段提交协议立即传播更改。如果使用排队更新,更改将存储在队列中;当网络连接可用时,再在发布服务器中异步应用排队事 务。由于更新异步传播至发布服务器,所以发布服务器或另一台订阅服务器有可能更新同一数据,而在应用更新时会发生冲突。将根据创建发布时设置的冲突解决策 略检测和解决冲突。

如果在新建发布向导中创建具有可更新订阅的事务发布,将同时启用立即更新和排队更 新。如果使用存储过程创建发布,则可以启用一个或两个选项。创建发布的订阅时,可以指定要使用的更新模式。如有必要,以后可以在两种更新模式之间切换。有 关详细信息,请参阅下面的“在更新模式之间切换”部分

合并复制:并复制通常用于服务器到客户端的环境中。合并复制适用于下列各种情况: 
 
  1:多个订阅服务器可能会在不同时间更新同一数据,并将其更改传播到发布服务器和其他订阅服务器。

 2:订阅服务器需要接收数据,脱机更改数据,并在以后与发布服务器和其他订阅服务器同步更改。 

  3:每个订阅服务器都需要不同的数据分区。 
 4:可能会发生冲突,并且在冲突发生时,您需要具有检测和解决冲突的能力。 
 5:应用程序需要最终的数据更改结果,而不是访问中间数据状态。 例如,如果在订阅服务器与发布服务器进行同步之前,订阅服务器上的行更改了五次,则该行在发布服务器上仅更改一次来反映最终数据更改(也就是第五次更改的值)。

 

clipboard[12]

                                                        (图5)

clipboard[16]

                                                   (图6)

其中被打上红圈叉叉的表,表示没有Primary Key的表是没法发布,关于Article Properties,主要是设置过滤表数据的

clipboard[18]

                                                                                                                          (图7)

clipboard[20]

                                                                                                                            (图8)

 

clipboard[22]

                                                         (图9)

image

                                                                                                                                      (图10)

第二个生成创建发布的脚本选项,不是必须的,如果你想研究,也可以选择

clipboard[24]

                                                                                                                             (图11)

 

clipboard[26]

                                                                                                                       (图12)

在发布名称(Publication name)的选项里面输入你想命名的名称,然后点击Finish,那么OK了

clipboard[28]

                                                         (图13)

clipboard[30]

                                                         (图14)

接下来,登录订阅服务器B,打开SSMS管理器,右键单击Local Subscriptions(本地订阅),选择新建订阅

clipboard[32]

                                                         (图15)

clipboard[34]

                                                        (图16)

clipboard[36]

                                                        (图17)

clipboard[38]

                                                        (图18)

clipboard[40]

                                                           (图19)

clipboard[42]

                                                         (图20)

clipboard[44]

                                                          (图21)

clipboard[46]

                                                          (图22)

clipboard[48]

                                                         (图23)

clipboard[50]

                                                                               (图24)

clipboard[52]

                                                         (图25)

clipboard[54]

接下来,你就可以测试数据是否同步,相关作业是否报错,检查具体原因,如果出现错误,建议大家看看这篇文件,囊括了大部分你可能会遇到的错误:http://kb.cnblogs.com/page/71979/, 我的这篇文章MS SQL 2008 发布订阅配置遇到的错误也打算不断整理收集复制发布订阅中碰到的问题.

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
3月前
|
SQL 存储 API
Flink实践:通过Flink SQL进行SFTP文件的读写操作
虽然 Apache Flink 与 SFTP 之间的直接交互存在一定的限制,但通过一些创造性的方法和技术,我们仍然可以有效地实现对 SFTP 文件的读写操作。这既展现了 Flink 在处理复杂数据场景中的强大能力,也体现了软件工程中常见的问题解决思路——即通过现有工具和一定的间接方法来克服技术障碍。通过这种方式,Flink SQL 成为了处理各种数据源,包括 SFTP 文件,在内的强大工具。
192 15
|
4月前
|
SQL 存储 Unix
Flink SQL 在快手实践问题之设置 Window Offset 以调整窗口划分如何解决
Flink SQL 在快手实践问题之设置 Window Offset 以调整窗口划分如何解决
69 2
|
2月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
88 11
|
2月前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
2月前
|
SQL 关系型数据库 数据库
SQL数据库:核心原理与应用实践
随着信息技术的飞速发展,数据库管理系统已成为各类组织和企业中不可或缺的核心组件。在众多数据库管理系统中,SQL(结构化查询语言)数据库以其强大的数据管理能力和灵活性,广泛应用于各类业务场景。本文将深入探讨SQL数据库的基本原理、核心特性以及实际应用。一、SQL数据库概述SQL数据库是一种关系型数据库
100 5
|
2月前
|
SQL 开发框架 .NET
ASP连接SQL数据库:从基础到实践
随着互联网技术的快速发展,数据库与应用程序之间的连接成为了软件开发中的一项关键技术。ASP(ActiveServerPages)是一种在服务器端执行的脚本环境,它能够生成动态的网页内容。而SQL数据库则是一种关系型数据库管理系统,广泛应用于各类网站和应用程序的数据存储和管理。本文将详细介绍如何使用A
86 3
|
2月前
|
SQL 消息中间件 分布式计算
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
93 0
|
2月前
|
SQL 大数据
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
66 0
|
2月前
|
SQL BI 网络安全
SQL Server2014的安装与配置
SQL Server2014的安装与配置
176 0
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")