SQL Server 2008 R2的发布订阅配置实践
纸上得来终觉浅,绝知此事要躬行。搞技术尤其如此,看别人配置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(新建发布)

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

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

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

(图4)
接下来,关于选择发布类型,根据你的实际情况,选择合适的发布类型
快照复制:快照复制将数据以特定时刻的瞬时状态分发,而不监视对数据的更新。发生同步时,将生成完整的快照并将其发送到订阅服务器。 当符合以下一个或多个条件时,使用快照复制本身是最合适的:
1: 很少更改数据。
2: 在一段时间内允许具有相对发布服务器已过时的数据副本。
3: 复制少量数据。
4: 在短期内出现大量更改。
事务复制:事务复制通常用于服务器到服务器环境中, 在以下各种情况下适合采用事务复制:
1: 希望发生增量更改时将其传播到订阅服务器。
2: 从发布服务器上发生更改,至更改到达订阅服务器,应用程序需要这两者之间的滞后时间较短。
3: 应用程序需要访问中间数据状态。 例如,如果某一行更改了五次,事务复制将允许应用程序响应每次更改(例如,激发触发器),而不只是响应该行最终的数据更改。
4:发布服务器有大量的插入、更新和删除活动。
5:发布服务器或订阅服务器不是 SQL Server 数据库(例如,Oracle)。
具有可更新订阅的事务发布:
事务复制支持在订阅服务器中通过可更新订阅和对等复制来进行更新。下面介绍两种可更新订阅:
立即更新。必须连接发布服务器和订阅服务器才能在订阅服务器中更新数据。
排队更新。不必连接发布服务器和订阅服务器即可在订阅服务器中更新数据。可以在订阅服务器或发布服务器脱机时进行更新。
在订阅服务器中更新数据时,首先将数据传播到发布服务器,然后再传播到其他订阅服务器。如果使用立即更新,将使用两阶段提交协议立即传播更改。如果使用排队更新,更改将存储在队列中;当网络连接可用时,再在发布服务器中异步应用排队事务。由于更新异步传播至发布服务器,所以发布服务器或另一台订阅服务器有可能更新同一数据,而在应用更新时会发生冲突。将根据创建发布时设置的冲突解决策略检测和解决冲突。
如果在新建发布向导中创建具有可更新订阅的事务发布,将同时启用立即更新和排队更新。如果使用存储过程创建发布,则可以启用一个或两个选项。创建发布的订阅时,可以指定要使用的更新模式。如有必要,以后可以在两种更新模式之间切换。有关详细信息,请参阅下面的“在更新模式之间切换”部分
合并复制:并复制通常用于服务器到客户端的环境中。合并复制适用于下列各种情况:
1:多个订阅服务器可能会在不同时间更新同一数据,并将其更改传播到发布服务器和其他订阅服务器。
2:订阅服务器需要接收数据,脱机更改数据,并在以后与发布服务器和其他订阅服务器同步更改。
3:每个订阅服务器都需要不同的数据分区。
4:可能会发生冲突,并且在冲突发生时,您需要具有检测和解决冲突的能力。
5:应用程序需要最终的数据更改结果,而不是访问中间数据状态。 例如,如果在订阅服务器与发布服务器进行同步之前,订阅服务器上的行更改了五次,则该行在发布服务器上仅更改一次来反映最终数据更改(也就是第五次更改的值)。

(图5)

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

(图7)

(图8)

(图9)

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

(图11)

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

(图13)

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

(图15)

(图16)

(图17)

(图18)

(图19)

(图20)

(图21)

(图22)

(图23)

(图24)

(图25)

接下来,你就可以测试数据是否同步,相关作业是否报错,检查具体原因,如果出现错误,建议大家看看这篇文件,囊括了大部分你可能会遇到的错误:http://kb.cnblogs.com/page/71979/, 我的这篇文章MS SQL 2008 发布订阅配置遇到的错误也打算不断整理收集复制发布订阅中碰到的问题.
参考资料:
http://www.cnblogs.com/dudu/archive/2010/08/26/1808540.html
http://wenku.baidu.com/view/da21ddd73186bceb19e8bbe3.html
SQL Server 2008 R2的发布订阅配置实践的更多相关文章
- SQL Server 2008 R2 添加登录账户配置权限
一.新建登录名1. 在登录名右侧的文本框中输入新建的管理员账号名称:2. 一对单选按钮组中,选择Sql Server 身份验证,并输入登录密码:3. 勾选强制实施密码策略复选框:(密码策略一般是指加强 ...
- SQL SERVER 2008 R2 SP3 发布
今晚上刚发现,微软很低调啊 下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=44271 整合SP3的Express系列版本还没 ...
- 关于SQL SERVER 2008 R2发布订阅功能
实现功能:主服务器维护数据的变更,从服务器需要时同步主服务器的数据. 配置:主从服务器均为SQL SERVER 2008 R2. 实现方法: 预备: 1.主从服务器需建立同一账户名及密码的账户(当时我 ...
- sql server 2008 r2 中的oracle发布使用笔记
sql server 2008 r2 中的oracle发布功能,能够将oracle数据库作为发布服务器,将oracle中的数据自动同步到sql server 数据库中,在新建oracle发布前确保sq ...
- 配置SQL Server 2008 R2 Reporting Services
记录如何在本地配置SQL Server 2008 R2 Reporting Services,笔者环境为Windows 7 64位 + SQL Server 2008 R2 一.准备工作 其实准备工作 ...
- SQL Server 2008 R2 Service Pack 3 已经发布
微软SQL Server Product Team在9月26号官方博客宣布,Microsoft SQL Server 2008 R2 Service Pack 3 (SP3)正式发布了 .具体信息可以 ...
- SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件
原文:SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件 从2005开始,就引入了"数据库邮件"功能.并且取代SQLMail.原有SQLMail ...
- SQL Server 2000向SQL Server 2008 R2推送数据
[文章摘要]最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他“服务器”向我们服务器推送的方式实现.我们服务器使用的是SQL Server 2008 R2,其他“服务器”使用的 ...
- SQL Server 2008 R2 企业版/开发版/标准版(中英文下载,带序列号)
一. 简体中文 1. SQL Server 2008 R2 Developer (x86, x64, ia64) – DVD (Chinese-Simplified) File Name: cn_sq ...
随机推荐
- jdk8中java.util.concurrent包分析
并发框架分类 1. Executor相关类 Interfaces. Executor is a simple standardized interface for defining custom th ...
- Deque的部分成员函数 解析,关于这个类,百度有很多解析,唯独没有其函数介绍
函数 描述 c.assign(beg,end) c.assign(n,elem) 将[beg; end)区间中的数据赋值给c. 将n个elem的拷贝赋值给c. c.at(idx) 传回索引idx所指的 ...
- ECMAScript 5中属性的特性值
这是<JavaScript高级程序设计(第三版)>第六章相关内容的总结. ECMAScript中有两种属性:数据属性和访问器属性.每种属性都有四个特性值. 数据属性的四个特性值: [[Co ...
- Android 短信监听及用途分析
监听系统短信这个只能作为一个技术点来研究下,读者可能在工作中可能不会哦涉及到,一般的应用软件也不会有这个需求 但是作为程序员呢,多了解一下也是好的. Android 监听系统短信有什么用? 1.对系统 ...
- 【Python实战】Pandas:让你像写SQL一样做数据分析(一)
1. 引言 Pandas是一个开源的Python数据分析库.Pandas把结构化数据分为了三类: Series,1维序列,可视作为没有column名的.只有一个column的DataFrame: Da ...
- CentOS下VMware用桥接模式,静态ip上外网
15年的时候,写过一篇博客:VMware中网络设置之Bridged 也是关于linux下vmware桥接模式.静态ip上外网的配置,不过当时更多的是用图形界面来实现的,通用性不强.生产环境,极少有l ...
- git log命令全解析,打log还能这么随心所欲!
git log命令非常强大而好用,在复杂系统的版本管理中扮演着重要的角色,但默认的git log命令显示出的东西实在太丑,不好好打扮一下根本没法见人,打扮好了用alias命令拍个照片,就正式出道了! ...
- Sql Server 备份还原失败错误ERROR:3145(备份集中的数据库备份与现有的数据库不同)及解决办法
SQL Server备份文件bak,备份后还原出现错误3145,备份集中的数据库备份与现有的 'xxx' 数据库不同. 解决办法如下: 1,新建一个与现有数据库重名的数据库. 如果您不知道数据库名称, ...
- qam 64的设计
module qam64(x,out,clk,clk1,rst);input x,clk,clk1,rst;output [18:0] out;reg [2:0] count;reg [5:0] re ...
- 转载:《TypeScript 中文入门教程》 12、类型推导
版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 介绍 这节介绍TypeScript里的类型推论.即,类型是在哪里如何被推断的. 基础 ...