CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

SQL Remote复制错误与复制冲突

作者: ,  出处:Sybase, 责任编辑: 李书琴, 
2007-11-02 11:11
  本文描述在复制设置中可能发生的错误和冲突类型……

  SQL Remote 被设计为允许在多个不同站点更新数据库。需要小心设计以避免复制错误,特别是如果数据库具有复杂结构时。本文描述在复制设置中可能发生的错误和冲突类型。

  注释:在此不讨论和消息传送失败相关的问题。

  复制错误

  复制错误分为以下几类:

  ·重复主键错误

  两个用户使用相同的主键值插入行,或者一个用户更新了主键,第二个用户插入具有该新值的主键。复制系统中到达给定数据库的第二个操作失败,因为它将产生重复的主键。

  ·未找到行错误

  一个用户删除了行 (即具有给定主键值的行)。

  第二个用户在另一站点更新或删除同一行。

  在这种情况下,第二个语句失败,因为找不到该行。

  ·参照完整性错误

  如果发布中包括包含外键的列,但不包括相关的主键,则抽取实用程序在远程数据库不使用外键定义,这样在远程数据库的 INSERT 就不会失败。

  这一点可以通过在表定义中包括适当的缺省值来解决。

  当主表具有 SUBSCRIBE BY 表达式,而相关外表没有时,也可发生参照完整性错误;此时可能复制外表中的行,但主表中的行可能从发布中被排除。

  复制冲突

  复制冲突和错误不同。如果正确处理,冲突在 SQL Remote 中不是问题。

  冲突:假设一个用户更新了行,第二个用户在另一站点更新同一行,则第二个用户的操作成功,且 SQL Remote 允许通过触发触发器 (Adaptive Server Anywhere) 或调用过程 (Adaptive Server

  Enterprise),从而以使要更改数据有意义的方式来解决这些冲突。

  冲突将在许多安装中发生。 SQL Remote 允许将使用触发器和过程的适当冲突解决方法作为 SQL Remote 安装的常规操作的一部分。

  必须通过设计在设置中排除复制中的 SQL 错误。 SQL Remote 包括一个帮助跟踪 SQL 语句中的错误的选项,但该选项并不是用来解决这些错误的。

  通过设置 Replication_error 选项,可在指定发生 SQL 错误时消息代理调用的存储过程。缺省情况下,不调用任何存储过程。

  在 Adaptive Server Anywhere 中设置 Replication_error 选项:

  •发出以下语句:

  SET OPTION
  remote-user.Replication_error
  = 'procedure-name'

  其中 remote-user 是消息代理命令行中的用户 ID, procedure-name 是检测到 SQL 错误时调用的过程。

  ◆在 Adaptive Server Enterprise 中设置 Replication_error 选项:

  •发出以下语句:

  exec sp_remote_option Replication_error, procedure-
  name
  go

  其中 procedure-name 是检测到 SQL 错误时调用的过程。

  复制错误过程的要求 复制错误过程必须有类型为 CHAR、 VARCHAR 或 LONG VARCHAR的一个参数。该过程用 SQL 错误消息调用一次,用引起错误的 SQL 语句调用一次。

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i