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

本文涉及的产品
云数据库 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
相关文章
|
8天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
51 10
|
18天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
16 0
|
8天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
68 6
|
3天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
8 0
|
4天前
|
SQL 自然语言处理 测试技术
NL2SQL进阶系列(4):ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL]
NL2SQL进阶系列(4):ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL]
NL2SQL进阶系列(4):ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL]
|
7天前
|
SQL 人工智能 自然语言处理
NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
|
8天前
|
SQL 监控 数据库
数据库管理与电脑监控软件:SQL代码优化与实践
本文探讨了如何优化数据库管理和使用电脑监控软件以提升效率。通过SQL代码优化,如使用索引和调整查询语句,能有效提高数据库性能。同时,合理设计数据库结构,如数据表划分和规范化,也能增强管理效率。此外,利用Python脚本自动化收集系统性能数据,并实时提交至网站,可实现对电脑监控的实时性和有效性。这些方法能提升信息系统稳定性和可靠性,满足用户需求。
32 0
|
8天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
12天前
|
SQL 数据安全/隐私保护
SQL Server 2016安装教程
SQL Server 2016安装教程
17 1
|
12天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
14 1