与 Microsoft SQL Server Compact 3.5 进行合并复制遵循以下过程:
在 SQL Server 上发布数据。
创建对发布的订阅。
同步数据。
下表定义了本节中使用的一些术语:
术语 |
定义 |
---|---|
项目 |
启用的用于复制的数据库表。 |
发布 |
项目的集合。 |
分区 |
发布中特定的行集或列集。 |
发布服务器 |
通过复制使发布可用的数据库。 |
订阅服务器 |
接收复制的数据并可以将数据更改传递回发布服务器的数据库。 |
订阅 |
将发布的副本传递到订阅服务器的请求。 |
订阅数据库 |
接收由发布服务器发布的项目的数据库。 |
发布数据
发布指定要发布的数据。发布通常针对不同用户或用户组进行自定义。有时,所有用户需要相同的数据。例如,可能每个员工都需要公司员工目录的副本。在其他情况下,不同的用户组需要不同的数据分区。例如,销售代表可能需要一组数据,而客户支持技术人员则需要另一组数据。个人用户还可能需要专门为他们筛选的数据。例如,销售代表可能只需要他/她自己的客户帐户的数据。
当您创建发布时,可以指定发布包含的项目。虽然 SQL Server 发布可能包含其他数据库对象(例如,存储过程、视图以及用户定义函数),但是 SQL Server Compact 3.5 复制会忽略这些对象,而仅包括 SQL Server Compact 3.5 订阅中的表。您可以通过筛选来指定要包括在项目中的行和列。有关详细信息,请参阅 SQL Server 联机丛书中的“复制”。
订阅发布
在定义发布后,通过在设备上借助编程方式调用 SQL Server Compact 3.5 Replication 对象或 SqlCeReplication 类公开的方法,或者使用 SQL Server Management Studio 中的新建订阅向导,应用程序可以订阅此发布。在创建订阅后,来自分发服务器的初始快照会在订阅服务器的订阅数据库上应用。
在订阅服务器上更新数据
您的应用程序可能会更新订阅数据库。合并复制允许每个订阅数据库自治更新。无论设备是否连接到网络都可以发生更新。每个 SQL Server Compact 3.5 数据库都使用更改跟踪来跟踪在 SQL Server Compact 3.5 订阅服务器上所执行的 INSERT、UPDATE 和 DELETE 语句。可以使用行级和列级跟踪。
同步数据
通常情况下,用户间歇地将设备连接到网络。这些连接允许应用程序同步在订阅服务器上所做的更改与在发布服务器上所做的更改。通过调用由 Replication 对象或 SqlCeReplication 类公开的同步方法,应用程序启动同步。同步过程分为四个步骤。
提取更改并创建输入消息文件。
SQL Server Compact 3.5 客户端代理从 SQL Server Compact 3.5 订阅服务器的订阅数据库中提取所有插入、更新和删除的记录,然后通过 HTTP 将它们传播到 SQL Server Compact 3.5 服务器代理。SQL Server Compact 3.5 服务器代理创建新的输入消息文件,然后将 SQL Server Compact 3.5 客户端代理发送的插入、更新和删除更改写入到该文件中。
运行 SQL Server 协调器进程并将更改应用到发布数据库。
当所有请求已经被写入到输入消息文件后,SQL Server Compact 3.5 服务器代理就会启动 SQL Server 协调器。SQL Server 协调器将加载 SQL Server Compact 3.5 复制提供程序,该提供程序读取输入消息文件并通知 SQL Server 协调器对 SQL Server Compact 3.5 订阅数据库所做的更改,这些更改必须应用到发布服务器上的发布数据库中。在处理过程中,SQL Server 协调器会检测并解决冲突。在多个订阅服务器或发布服务器更新同一条记录时会发生冲突。
备注
SQL Server 协调器使用冲突解决程序解决冲突。您可以使用由 SQL Server 提供的冲突解决程序为 SQL Server Compact 3.5 复制应用程序实现简单的冲突解决,或者您可以编写自定义的冲突解决程序来实现更复杂的解决方案。有关详细信息,请参阅复制冲突检测和解决。
创建输出消息文件。
SQL Server 协调器将通知 SQL Server Compact 3.5 复制提供程序在发布服务器上所做的更改,这些更改必须应用到该设备上的订阅数据库中。SQL Server Compact 3.5 复制提供程序会将这些更改写入到运行 IIS 的服务器上的输出消息文件中。
读取输出消息文件并将更改应用到 SQL Server Compact 3.5 订阅数据库。
当 SQL Server 协调器进程完成后,SQL Server Compact 3.5 服务器代理会找到由 SQL Server Compact 3.5 复制提供程序创建的输出消息文件。此文件包含在发布服务器上发生的、必须应用到设备上的订阅数据库中的更改。SQL Server Compact 3.5 服务器代理读取输出消息文件并将其传输到设备上的 SQL Server Compact 3.5 客户端代理。SQL Server Compact 3.5 客户端代理会将输出消息文件中的更改应用到 SQL Server Compact 3.5 订阅数据库。
备注
SQL Server Compact 3.5 客户端代理会在从设备上的订阅数据库读取更改,或者将更改应用到设备上的订阅数据库时,处理逻辑块中的输入和输出消息文件。通过以这种方法处理每个消息文件,SQL Server Compact 3.5 客户端代理可以避免在设备上写入整个消息文件,从而节省了设备上的存储空间。
在 SQL Server Compact 3.5 客户端代理已经将所有更改合并到设备上的订阅数据库并解决了所有冲突之后,发布和订阅数据库才进行同步,并聚合数据。但是,因为更新可以连续发生,发布服务器和订阅服务器上的数据值有可能不相同。
重要
您无法在相同的数据库上同时启动两个合并复制进程。