SQL复制4合并.pdf

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL复制4合并

浅谈MS SQL Server 的复制之四-合并复制 回忆一下我的试验环境,Windows XP 上的MS SQL Server2000 中文个人版。不能做事 务复制。现在只好先试试合并复制。 这次准备用ERPdemo 数据库作为发布复制的数据库,用ERP 数据库作为订阅的数据库。 先创建发布,然后创建请求订阅。 还是使用主菜单的复制-创建和管理发布。 弹出对话框,选ERPdemo 数据库,然后点击“创建发布”按钮。 出现“创建发布”向导,点击下一步。 选ERPdemo ,下一步。 这次要做合并发布,当然选最下面那一项-“合并发布”。 其中的选项和创建快照发布时不同,不过仍然只选“运行SQL Server 2000 的服务器”, 然后下一步。 选择项目,这次选aaa0000~aaf0000 六个表。然后下一步。 它提示你一个重要的问题。问题描述的框框里面还有好多话,如下图: 这个问题的意思是,做合并复制时,SQL Server 要在选择的各个项目 (表)中都添加一 个合并复制使用的“唯一标识符”。即,在每个已选择的表上都添加一个叫做“rowguid ”列, 这个列的数据类型是uniqueidentifer,默认值是SQL Server 的newid()函数。然后它说,添加 的这个新列会给你带来三个问题。下面告诉你都在哪里添加了这个东西。 知道这件事情后,点击“下一步”。 给这个发布取一个名字,就用默认的吧,然后下一步。 我们还是不自定义,叫它搞吧。然后下一步。 它说,点击“完成”按钮才去创建。那么就点击“完成”按钮。 它干活去了,不要取消,要等待。 完成创建,问你是否修改一下发布属性。可以不修改,直接关闭。 创建工作已完成,回到原来对话框。 下面,再创建请求订阅。 还是用主菜单-复制-请求订阅”SS55” 。 出现请求订阅对话框。选ERP 数据库,点击“请求订阅”按钮。 出来向导,下一步。 下一步。 点开服务器左边的加号,选择已经存在的合并发布。 这次还是使用SQL Server 身份验证,输入用户名和密码后,下一步。 选中订阅用的数据库ERP ,下一步。 注意,初始化架构和数据时,因为是合并复制,一定要选中那个复选框。然后下一步。 我们是使用默认的快照文件夹,这个文件夹是创建发布、订阅服务器和分发时指定的。 下一步。 它默认的是选中中间的那个,为了试验,改选最上面的那个。下一步。 用上面那个默认的,下一步。 它说“正在运行”,直接下一步。 点击“完成”按钮才能完成。 它干活去了,不要取消,要等待。 报告已经完成,点击确定。 回到请求订阅对话框,点击关闭,所有配置就都做完了。 发布和订阅都配置完了。现在该看看试验效果了。 打开ERPdemo 数据库,看看aaa0000 表。在这个表中确实添加了“rowguid ”列。 再打开ERP 数据库,看看aaa00000 表。此时这个表已经不是ERP 数据库里面原来的那 个 aaa00000 表了,已经和 ERPdemo 数据库里面的 aaa00000 表完全相同了,也有那个 “rowguid ”列。表里面的所有数据也和ERPdemo 数据库里面的aaa00000 表完全相同了。 看样子已经把快照成功地“复制”过来了。 下面再看看是否和 SQL Server 说的那样,双方无论哪一方修改了数据都会在对方有反 映,即合并到对方去。 先在发布方添加一条记录。片刻之后打开订阅方的对应的表看一看,发现这一方已经有 了对方添加的那条记录。在订阅方添加记录,片刻之后就会反映到发布方去。除了添加记录, 进行修改、删除操作都能对对方产生影响,几乎能够“立即同步”。 既然,在配置合并发布时SQL Server 说它给每个要发布的表都添加了“rowguid ”列, 而且这个列会导致不带列列表的INSERT 语句失败。这就牵扯修改已有程序的问题。 当我们使用PB 作为开发工具时,对数据库里面的数据往往有三种操作方式。其一是使 用数据窗口,其二是使用嵌入式SQL 语句,第三是在后台使用动态SQL 或存储过程。 这三种方式都会受到影响。当然没有INSERT 是不会受影响的。 使用原来程序已经制作好的数据窗口对象时,由于画数据窗口时并不知道还有一个 “rowguid ”列,所以这个列在数据窗口上不存在。这样的数据窗口经试用,添加记录时不 发生问题。当然修改、删除就更没有问题了。对于动态生成的数据窗口,在生成

您可能关注的文档

文档评论(0)

bodkd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档