窗体顶端 皓月长空 天行健,君子以自强不息;地势坤,君子以厚德载物。荣辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。 随笔 - 7, 文章 - 1, 评论 - 187, 引用 - 0 [转]SqlServer数据库同步
详解 SqlServer数据库同步是项目中常用到的环节,若一个项目中的数据同时存在于不同的数据库服务器中,而这些数据库需要被多个不同的网域调用时,配置SqlServer数据库同步是个比较好的解决方案。SqlServer数据库同步的配置比较烦锁,下面对其配置详细步骤进行介绍: 一、 数据复制前提条件 1. 数据库故障还原模型必需为完全还原模型。 2. 所有被同步的数据表都必须要用主键。 3. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。 4. SQLSERVER必需启动代理服务,且代理服务必需以本地计算机的帐号运行。 二、 解决前提条件实施步骤 1. 将数据库故障还原模型调整为完全还原模型。具体步骤如下: 打开SQLSERVER企业管理器à选择对应的数据库à单击右键选择属性à选择”选项”à 故障还原模型选择完全还原模型。 2. 所有被同步的数据表都必须要用主键。(主要指事务复制)如果没有主键的数据表,增加一个字段名称为id,类型为int 型,标识为自增1的字段。 3. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。 在企业管理器里面注册的服务器,如果需要用作发布服务器、分发服务器和订阅服务器,都必需以服务器名称进行注册。不得使用IP地址以及别名进行注册,比如LOCAL, “.”以及LOCALHOST等。 如果非同一网段或者远程服务器,需要将其对应关系加到本地系统网络配置文件中。文件的具体位置在%systemroot%\system32\drivers\etc\hosts 配置方式: 用记事本打开hosts文件,在文件的最下方添加IP地址和主机名的对应关系。如图: SQLSERVER必需启动代理服务,且代理服务必需以本地计算机的帐号运行。 启动SQLSERVER代理的方法:我的电脑à单击右键”管理”à服务à SQLSERVERAGENT 将其设为自动启动。如图: 以本地计算机帐户运行的配置方法: 打开SQLSERVER企业管理器,选择管理SQLSERVER代理。单击右键属性。将系统帐户更改为本地帐户且此本地帐号要求有系统管理员的权限。一般设置为administrator这个帐户。 以上前提条件满足以后,就可以配置数据库复制服务了。 三、了解复制配置概念和原理 1. 数据复制角色 复制服务有三个角色,分别是发布服务器,分发服务器和订阅服务器。他们分别做不同的工作。就像我们日常买书和报纸的概念是一样的。 发布服务器: 也称为出版服务器,主要负责数据的发布和出版工作。这个角色就好比我们的出版社或者报社。 分发服务器: 主要负责将发布服务器的
分发给订阅者。他是连接发布服务器和订阅服务器的桥梁。这个角色就好比我们的邮递员,将书和报纸送到我们的手里。 订阅服务器: 主要负责接收发布的内容。这个角色就好比我们自己订阅书和报纸,是一个订阅者的角色。 2. 数据订阅模式 数据订阅的模式有推式订阅和拉式订阅两种。推式订阅主要是分发服务器将数据推给订阅服务器。 拉式订阅是订阅服务器主动向分发服务器取数据。 这就好比我们自己订阅杂志和报纸一样,如果人家送货上门,这就是推式订阅,消耗的是分发服务器的资源,也就是消耗送货人员的资源。如果是拉式订阅,我们就需要自己到书店去购买,这样消耗的就是我们自己的资料。消耗的是订阅服务器的资源。 3.数据发布类型 数据发布类型可发为三种(SQL2000): A. 快照复制 当符合以下一个或多个条件时,使用快照复制本身是最合适的: · 很少更改数据。 · 在一段时间内允许具有相对发布服务器已过时的数据副本。 · 复制少量数据。 · 在短期内出现大量更改 B. 事务复制 事务性复制通常用于服务器到服务器环境中,在以下各种情况下适合采用事务性复制: · 希望发生增量更改时将其传播到订阅服务器。 · 从发布服务器上发生更改,至更改到达订阅服务器,应用程序需要这两者之间的滞后时间较短。 · 应用程序需要访问中间数据状态。例如,如果某一行更改了五次,事务性复制将允许应用程序响应每次更改(例如,激发触发器),而不只是响应该行最终的数据更改。 · 发布服务器有大量的插入、更新和删除活动。 C. 合并复制 合并复制通常用于服务器到客户端的环境中。合并复制适用于下列各种情况: · 多个订阅服务器可能会在不同时间更新同一数据,并将其更改传播到发布服务器和其他订阅服务器。 · 订阅服务器需要接收数据,脱机更改数据,并在以后与发布服务器和其他订阅服务器同步更改。 · 每个订阅服务器都需要不同的数据分区。 · 可能会发生冲突,并且在冲突发生时,您需要具有检测和解决冲突的能力。 · 应用程序需要最终的数据更改结果,而不是访问中间数据状态。例如,如果在订阅服务器与发布服务器进行同步之前,订阅服务器上的行更改了五次,则该行在发布服务器上仅更改一次来反映最终数据更改(也就是第五次更改的值)。 四、数据复制实施步骤 A. 配置发布服务器 打开SQLSERVER企业管理器à选择已注册的SQL服务器à工具à向导 弹出选择向导后,选择“配置发布和分发向导”后,出现如下向导: 点击”下一步” 选择此服务器作为分发服务器和分发服务器,点击下一步 选择快照文件夹,注意此处必段要使用网络路径。 点击下一步, 使用默认设置,点击下一步后点击完成, 出现正在配置对话框,如下图: 配置完成后出现如下对话框: 此时,说明我们的发布服器配置成功了! 点击确定后,会谈出如下窗口。如下图: 此时SQLSERVER企业管理器中多了一项复制监视器。如下图: 发布服务器配置成功以后,我们可以开始来配置发布服务器了。 B.配置分发服务器 分发可以配置在分发服务器上,也可以配置到其他的SQLSERVER 服务器上。此处我们将分布服务器和分发服务器配置在同一台服务器上。下面是需要发布数据库的配置步骤: 打开SQLSERVER企业管理器à选择已注册的SQL服务器à工具à向导 弹出选择向导后,点击”复制”选择”创建发布向导”,选择需要发布的数据库。如下图: 点击“创建发布”后,出现向导,点击“下一步”出现如下界面: 此界面要求确认选择需要发布的数据库,系统会自动选中第一次选择的数据库,只需要点击“下一步”后出现如下界面: 此时需要选择发布的类型,跟据我们对发布类型的描述和网络带宽情况,选择合适的发布类型,比较常用的是快照发布和事务发布。下面就以这两个发布为例进行配置。首先我们选择快照发布,点击“下一步”, 出现如下界面: 此时向导提示我们选择订阅 服务器的类型。由于我们现在用的都是 SQL SERVER 2000, 所以此时我们只选择“运行SQL SERVER 2000的服务器”即可(系统默认选项),然后点击“下一步”,出现如下界面: 此时出现选择数据库对象进行发布,我们可以全部选择,也可只选择需要发布的表、存储过程、视图以及自定义函数等。我们点击表的“全部发布”,点击“下一步”,出现如下界面: 由于我们采用的是快照复制,所以会出现一个”IDENTITY属性未传输到订阅服务器的问题(就是指不会转输int类型为自增1的属性,但是数据会进行传输)”,此时我们点击下一步, 出现如下界面: 出现以上界面后,我们再次点击“下一步”,会出现如下对话框: 可以选择对定义数据的筛选,比如进行垂直(数据的列)或者水平(数据的行)的筛选。此处我们选择否(系统默认),然后点击”下一步”, 如下图: 出现配置完成的界面,点击完成即可。如下图: 发布服务器创建完成后,会出现如下界面: 致此,发布服务器的配置就完成了。 此时我们可以通过复制监视器来查看现有服务器的各项复制代理的工作情况。如下图: 当发布服务器配置完成以后,我们可以被发布的数据库多了一个手托着的图标。如下图: 注:如果需要对某数据库进行事务复制,只需要在分布类型中选择“事务发布”就可以了。如下图: 其他操作与快照复制相同。需要注意的是“事务复制”要求数据表必需要有主键,否则无法对表进行发布。 发布服务器配置完成以后,我们可能进行订阅服务器的配置了。 C. 配置订阅服务器 订阅服务器有两种方式。一种是推式订阅,一种是拉式订阅。 具体选择那一种订阅方式。需要考虑几方面的因素: ① 对网络的考虑 比如外网远程服务器需要订阅本地数据,由于本地服务器没有公网IP,则需要采取由本地向远程服务器进行推式订阅,即强制订阅的形式。 ② 对服务器性能的考虑 比如订阅服务器和分发服务器都是外网IP地址或者内网IP地址。但是要求复制过程中不会对分发服务器产生过大的压力。此时,我们可以采取拉式订阅的方式。拉式订阅消耗的是订阅服务器的资源,而不会对分发服务器的性能产生大的影响。 推式订阅的具体配置如下: 打开SQLSERVER企业管理器à选择已注册的SQL服务器工具向导复制创建强制订阅向导。如下图: 选择需要强制订阅的数据库,单击“强制新订阅“后出现了强制新订阅的欢迎向导。如下图: 点击“下一步”,选择需要订阅服务器,如下图: 单击“下一步”,出现订阅数据库的名称, 如下图: 此时,创建一个适合的数据库名点“浏览或创建”就可以选择现 有的数据库或者创建一个新的数据库了。如下图: 如果需要新建一个数据库,我们可以点击“新建”,出现了新建数据库的对话框。如下图: 新建完数据库之后,点击“下一步”如下图: 选择分发代理何时更新订阅内容,可以使用最短的滞后时间,也 可以选择使用调度,此时我们选择连续池(默认设置),然后点击”下一步”, 出现如下界面: 点击“下一步”进行初始化架构和数据, 此时系统会检测SQLSERVER代理服务的工作状态。如下图: 如果状态是“正在运行”,可点击“下一步”,如果状态是未知,则需要检查一下SQLSERVER代理服务是否启动,如果没有,则需要启动一下SQLSERVER的代理服务。点击”下一步”之后, 出现配置完成界面,如下图: 点击“完成”,并开始配置订阅了。如下图: 至此推式订阅配置完成。(拉式订阅配置与此基本相同,需要在订阅服务器上通过复制向导配置请求订阅即可) 分类: 数据库技术, 随想 标签: 同步, Sql, 数据库 绿色通道:好文要顶关注我收藏该文与我联系 皓月长空 关注 - 1 粉丝 - 2 +加关注 1 0 (请您对文章做出评价) « 上一篇:WinCE数据通讯之SqlCE数据同步篇 » 下一篇:WinCE数据通讯之Web Service分包传输篇 posted on 2009-06-04 11:48 皓月长空 阅读(3782) 评论(17) 编辑 收藏 评论 1845386 #1楼 回复 引用 查看 好详细啊。。 "下一步"教程 囧rz 2009-06-04 11:55 | Allie #2楼 回复 引用 查看 很好的介绍 顶一下 前面几个图是微软的来源吧? 2009-06-04 11:55 | 徐少侠 #3楼[楼主] 回复 引用 查看 @Allie 主要用于项目实施人员查阅 :-) 2009-06-04 12:18 | 皓月长空 #4楼 回复 引用 查看 不错,整理得很好,非常感谢 2009-06-04 12:29 | 肥仔鱼 #5楼 回复 引用 查看 非常感谢!为楼主的辛勤劳作致敬! 2009-06-04 12:37 | alisx #6楼 回复 引用 查看 很详细...谢谢啦 2009-06-04 12:44 | 别爱上哥,哥只是个传说! #7楼 回复 引用 查看 小顶一下,以示支持 2009-06-04 13:06 | Selfocus #8楼 回复 引用 查看 这是SQL2000的截图,有没有提供SQL2005以上版本的方案呢? 2009-06-04 13:39 | 西狐 #9楼 回复 引用 不错。楼主能不能说一下,关于异地国家数据库分发与订阅的问题? 2009-06-04 15:09 | petergloder[未注册用户] #10楼 回复 引用 查看 这个。。。。好像很久之前的了吧 2009-06-04 15:54 | James.Ying #11楼 回复 引用 查看 linked server就行了,没必要添加什么host吧 2009-06-04 17:06 | Vincent Yang #12楼 回复 引用 查看 @petergloder 异地国家很麻烦,而且微软好像都不建议这样做。 2009-06-04 17:07 | Vincent Yang #13楼 回复 引用 查看 好像以前在哪里看到过。 2009-06-04 17:43 | Jerry Qian #14楼[楼主] 回复 引用 查看 @Vincent Yang 如果是本地网络,能够找到server添加是可以的,但是外网的话是要添加别名才能在server列表中添加 @Jerry Qian 这个技术已经是很老的了 2009-06-04 20:21 | 皓月长空 #15楼 回复 引用 查看 顶一个。 2009-06-04 20:57 | 深山老林 #16楼 回复 引用 查看 顶起!!~~ 2010-06-10 08:50 | luckyfish #17楼 回复 引用 查看 原文作者:田超波 原文标题:数据中心SQL复制方案3 原文日期:2007/12/2 抄袭可耻啊…… 2010-06-11 09:27 | 不要迷恋哥,哥只是个传说 注册用户登录后才能发表评论,请 登录 或 注册,返回博客园首页。 3800元,PHP
费暴跌! 最新IT新闻: · 30 个 jQuery 导航菜单插件和教程 · 佳能X Mark I计算器鼠标正式发布 · 微软明天将在日本宣布首部 Windows Phone 芒果手机 · 匿名互联网创造出愤怒时代 · 盛大网络宣称第一季度37%员工升职加薪 » 更多新闻... 知识库最新文章: HTML5基础,第3部分:HTML5 API的威力 华丽丽的HTML5新特性 一个软件工程师在北京的反省 停止编程 软件公司的两种管理方式 » 更多知识库文章... 网站导航: 博客园首页 IT新闻 我的园子 闪存 程序员招聘 博问 China-pub 计算机图书网上专卖店!6.5万品种2-8折! China-Pub 计算机绝版图书按需印刷服务 简洁版式:[转]SqlServer数据库同步方案详解 导航 博客园 首页 新随笔 联系 订阅 管理 < 2009年6月 > 日 一 二 三 四 五 六 31 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 公告 昵称:皓月长空 园龄:2年 粉丝:2 关注:1 +加关注 我的闪存 搜索 常用链接 我的随笔 我的空间 我的短信 我的评论 更多链接 我的参与 我的新闻 最新评论 我的标签 我的标签 同步(2) SqlCE(1) 合并复制(1) 转载 引用(1) 访谈(1) 项目(1) 会谈(1) 系统(1) 业务(1) Sql(1) 更多 随笔分类 Dot NET Compact Framework(3)(rss) 数据库技术(1)(rss) 随想(5)(rss) 项目文档(1)(rss) 随笔档案 2009年8月 (1) 2009年7月 (1) 2009年6月 (1) 2009年5月 (4) 朋友博客 小稀博客(rss) 小稀的博客园 最新评论 1. Re:WinCE数据通讯之Web Service篇 请发我一份,谢谢! cl_d_19871015@163.com --Leo Dang 2. Re:WinCE数据通讯之Web Service篇 请楼主发一份到我的邮箱里,我目前也遇到了这个问题, 我是准备走考勤的数据通过GPRS发送到服务器上,考勤数据有时间和考勤头像 谢谢 lamou@163.com --lamou 3. Re:WinCE数据通讯之Web Service篇 请楼主发一份到我的邮箱里,我目前也遇到了这个问题,谢谢 shui7937@163.com --如梦星空2 4. Re:WinCE数据通讯之Web Service篇 十分感谢楼主分享 跪求一份密码 谢谢! linchunai1212@163.com --aizi 5. Re:C#随机生成不重复字符串 4402NV8N42N441PRTRT2VV442PRTRT2VV443PRTRT2VV4442NV8N42N生成500条数据,其中如上数据,很明显是有重复的,算法不正确... --altacks 阅读排行榜 1. WinCE数据通讯之Web Service篇(4807) 2. WinCE数据通讯之SqlCE数据同步篇(2786) 3. WinCE数据通讯之Web Service分包传输篇(1856) 4. C#随机生成不重复字符串(1408) 5. 客户访谈文档(277) 评论排行榜 1. WinCE数据通讯之Web Service篇(142) 2. WinCE数据通讯之Web Service分包传输篇(12) 3. WinCE数据通讯之SqlCE数据同步篇(10) 4. 深恶痛绝之“转载引用”(2) 5. 客户访谈文档(2) Powered by: 博客园 Copyright © 皓月长空 窗体底端