Access 2003完整教程:关于同步冲突 (MDB)

注释本主题中的信息仅适用于 Microsoft Access 数据库 (.mdb)。

当在两个或多个副本中都对数据进行更改时,就可能发生冲突。

Microsoft Access 不同版本间的冲突行为差异

在 Access 95 和 97 中存在同步冲突和同步错误。当两个用户在副本集内两个不同的数据库中更新相同的记录时,就会发生同步冲突。同步这两个数据库就会解决这种冲突,但记录中的两种更改只能有一种应用到这两个数据库中。当对副本集内某个数据库中的数据进行更改后,如果因违反参照完整性或其他限制条件而无法应用于副本集内另一个数据库时,则发生同步错误。

在 Access 2000 及更高版本中,引起同步冲突和同步错误的事件都被笼统地认为是同步冲突。有一种单一机制可用于记录并解决冲突,使处理过程更容易执行。无论何时发生冲突,获胜的更改将被选择并应用于所有的副本中,而落败的更改将在所有副本中作为冲突记录下来。“冲突浏览器”(Access 的默认工具)用于协调和解决同步冲突。

Access 不同版本间的行与列级别冲突解决比较

在 Microsoft Access 95 和 97 中,冲突是在行级别决定的。只要在两个独立的副本中更改相同的记录(即使在每个副本中更改的字段不同)就会发生冲突。例如,在一个副本中更改某位客户的电话号码,而在其他副本中更改同一客户的邮政编码,这种情况就会引起冲突。

在 Access 2000 及更高版本中,冲突是在列级别决定的。只有更改相同的列(也称为字段)时,两个不同副本中对同一记录的更改才会导致同步冲突。所以,在前面的例子中,由于两个用户更改的是不同的字段,所以不再会造成冲突。

当数据库设置为可同步复制时,默认设置为列级别冲突解决。若要为表指定行级别冲突解决,则在将表设置为可同步复制之前,必须先设置行级别冲突解决。

在将数据库或单个表设置为可同步复制之前,可以对其设置冲突跟踪。创建副本之后,就不能更改该设置了。但可以将单个表的值更改为行级别跟踪。

注释使用Jet 和同步复制对象 (JRO)只能为数据库指定默认跟踪,而无法为单个表指定默认跟踪。当将数据库设置为可同步复制时,可以使用 JROMakeReplicable方法将ColumnLevelTracking属性设置为TrueFalse

同步冲突的类型

同时更新冲突

当两个副本同时更新同一记录时,将发生同时更新冲突。落败的记录将记录在冲突表中。

唯一键冲突

在出现下列情况之一时,将发生唯一键冲突:

表级别有效性冲突

当输入的数据违反表级别有效性规则时,就发生表级别有效性冲突。有效性规则限制表中允许输入的数据值或数据类型。如果没有确定现有数据是否违反表级别有效性规则就向“设计母版”中添加该规则,则在使副本集内其他数据库的设计更改同步时就可能会发生冲突。在这种情况下,会删除记录,并将其记录在冲突表中。

更新参照完整性冲突

当在一个副本中更新主键,而在其他副本上添加新的引用原始主键值的子记录时,将发生更新参照完整性冲突。在同步期间,新的子记录被删除并记录到冲突表中。为在同步期间减少这些类型错误的数量,可以将 s_GUID 字段用作部分或全部复制表中的主键。

删除参照完整性冲突

当在一个副本中删除某个主键记录,而在第二个副本中添加了新的引用已删除主键的子记录时,将发生删除参照完整性冲突。在对两个副本进行同步时,新的子记录就会被标记为删除,并添加到冲突表中。

锁定冲突

如果因为其他用户锁定了表而在同步期间无法应用记录,则发生锁定冲突。Microsoft Access 将多次尝试对记录进行更新,但如果失败,同步就会终止,整个事务处理将返回其原始状态。这时会返回错误消息,但不记录冲突。

外键违反冲突

当存在无效的主键记录时,将发生外键违反冲突。这种冲突可能是其他类型的冲突所引起的。

区分大小写冲突和排序次序冲突

如果数据库之间存在语言排序次序或排序是否区分大小写的差异,则在跨越多种数据库类型(例如 Access 和 Microsoft SQL Server 数据库)的副本集中发生冲突的次数就会增加。这是因为某个数据库中的唯一键值对于使用不同排序方式的其他数据库可能不是唯一的。这个问题可能会影响编入索引的文本数据和元数据,但不影响没有编入索引的文本数据。按不同的排序方式创建副本时要特别注意,必须确保元数据和已编入索引的文本对于两种排序方法而言都是唯一的。

部分副本中的冲突

部分副本接收与部分副本中所有的行(包括在同步期间添加到部分副本中的行)相关的冲突。

解决冲突

如果在一个或多个副本中更改了复制数据库中相同的字段,则当将某个副本与副本集进行同步时,将导致冲突。若要解决这些冲突,请打开“冲突浏览器”。向导会列出每一种冲突,用户必须手动确定哪个已更改的记录中包含正确的信息。

上页:Access 2003完整教程:关于智能标记 下页:Access 2003完整教程:关于选择同步方法 (MDB)

Access 2003完整教程:关于同步冲突 (MDB)

Access 2003完整教程:关于选择同步方法 (MDB)Access 2003完整教程:关于主题
Access 2003完整教程:关于 Microsoft 所支持的智能标记Access 2003完整教程:关于用 Microsoft Outlook 跟踪工作和查找文件
Access 2003完整教程:关于更新 Access 项目中的数据Access 2003完整教程:关于升迁 Microsoft Access 数据库
Access 2003完整教程:关于用户级安全机制 (MDB)Access 2003完整教程:关于在多个 Access 版本中使用 Access 文件
Access 2003完整教程:用于部署 Access 项目的方法Access 2003完整教程:关于 Windows 注册表
Access 2003完整教程:关于 XSL 转换文件Access 2003完整教程:关于自动填入数据的“自动查阅”查询 (MDB)
Access 2003完整教程:关于双向字体Access 2003完整教程:关于在从右到左应用程序中创建宏
Access 2003完整教程:关于从右到左功能的兼容性Access 2003完整教程:关于从右到左语言功能
Access 2003完整教程:关于双向文本的拼写检查Access 2003完整教程:关于在表达式中使用双向文本
Access 2003完整教程:关于在从右到左应用程序中创建模块Access 2003完整教程:关于从右到左 HTML 文件的代码页和文本布局支持
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号