从客户端向服务器推送数据

从客户端向服务器推送数据包括将 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 中所做的更改向回传播到 SQL Server 表。有关详细信息,请参阅“Push 方法”。

应用程序必须已通过调用打开跟踪选项的 Pull 方法创建了本地 SQL Server Compact Edition 表。

远程数据访问 (RDA) 跟踪的 Pull 和 Push 方法使用的是乐观并发控制。SQL Server 不会锁定请求的记录。应用程序调用 Push 方法时,对本地 SQL Server Compact Edition 数据库所做的更改将无条件应用于 SQL Server 数据库。这可能会使 SQL Server 数据库的其他用户所做的更改丢失。

批处理

RDA_BATCHOPTION 指定 SQL Server Compact Edition 是否应批处理发送给 SQL Server 表的更改。默认设置是 BATCHINGOFF,其中更改(插入、更新和删除)作为独立事务应用到 SQL Server 表。每一事务都不依赖于另一事务的成功完成。BATCHINGON 指定所有更改作为单个事务发送。在这种情况下,所有更改必须都成功才能保证该事务成功。如果一个更改失败,则整个事务就会失败,不会有任何更改应用到 SQL Server 表。虽然 BATCHINGON 不是默认选项,但在生成解决冲突的代码时,某些开发人员可能将其作为更好用的机制使用。有关详细信息,请参阅RDA 冲突检测和报告

BATCHINGON 和 BATCHINGOFF 都会将所有错误返回到错误表,而不仅仅返回所发生的第一个错误。例如,如果指定 BATCHINGON,而五个更改中有三个失败,那么不会应用任何更改并且所有三个失败都会存储在错误表中。如果指定 BATCHINGOFF,那么相同的三个失败会存储在错误表中,其他两个更改会应用到 SQL Server 表。

非批处理事务

在以非批处理方式处理事务(BATCHINGOFF 选项)时,冲突的检测是在行级别上进行的。冲突的行将被返回到应用程序并存储在指定的错误表中。例如,如果应用程序试图将无效的行推送到 SQL Server,该行将被返回到应用程序,并与指示冲突的错误消息一起存储在错误表中。

冲突行被返回到错误表后,该行就会从设备上的原始数据库中删除。您必须对应用程序进行设计,以使用户能够纠正冲突数据并将冲突数据合并回基于 Windows Mobile 的原始数据库中。

批处理事务

RDA 也支持批处理推送(BATCHINGON 选项),此时只有所有行成功推送整个推送事务才能成功。如果一行失败,则整个推送事务失败,不会有任何数据被更新。冲突的行将被复制到错误表中。与非批处理推送不同,基于 Windows Mobile 的原始数据库会保持不变。您必须对应用程序进行设计,以使用户能够纠正冲突数据并将它合并回基于 Windows Mobile 的原始数据库中。在自动对错误表进行清除操作后,才会复制冲突行,因此错误表中只保存了最后一次推送操作产生的冲突。

请参阅

任务

如何推送数据(以编程方式)

帮助和信息

获取 SQL Server Compact Edition 帮助