需要同步PDA和服务器数据库。用SQLCE3.0
SqlCeRemoteDataAccess.Pull方法可以下载服务器数据库的数据到PDA,
其中有个参数叫trackoption 。
当我把这个参数设置为TRACKINGOFF,也就是不跟踪数据变化时,没有任何问题,可以下载数据。
但当把它设置为TRACKINGON时,就会报错80040E3F,描述是表已经存在。服务器中,该表的主键已经创立了,而且下载语句是select * from table.
下面是MSDN对这个参数的说明:
- 下表列出了 RDA_TRACKOPTION 枚举的枚举器及其对应的值,并分别进行了说明:
- 成员名称 值 说明
- TRACKINGOFF
- 0
- SQL Server 2005 Compact Edition (SQL Server Compact Edition) 不跟踪对所请求表的更改。对于本地表,不需要 PRIMARY KEY 约束,也不会创建该约束。
-
- TRACKINGON
- 1
- SQL Server Compact Edition 跟踪对所请求表的所有更改。将在本地表上创建与所指定 SQLSelectString 相关的 PRIMARY KEY 约束。这是默认设置。
-
- TRACKINGONWITHINDEXES
- 2
- SQL Server Compact Edition 跟踪对本地表的所有更改。将在本地表上创建的 SQLSelectString 中所指定的 SQL Server 表的索引和 PRIMARY KEY 约束。
-
- TRACKINGOFFWITHINDEXES
- 3
- SQL Server 不跟踪对所请求表的更改。但是,将在本地表上创建的 SQLSelectString 中所指定的 SQL Server 表的索引和 PRIMARY KEY 约束。
-
- 备注
- 当指定 TRACKINGON 或 TRACKINGONWITHINDEXES 时,SQL Server Compact Edition 将跟踪在本地表中插入、更新或删除的每条记录。当指定 TRACKINGON 时,将在请求的表上创建 PRIMARY KEY 约束。当指定 TRACKINGONWITHINDEXES 时,将在请求的表上创建 PRIMARY KEY 约束和相关索引。仅当请求组成索引的列时才会创建索引。
- 当 RDA_TRACKOPTION 设置为 TRACKINGON 或 TRACKINGONWITHINDEXES 时,将应用下列限制条件:
- 如果 SqlSelectString 语句返回不可更新的记录集,将出现错误。
- 必须在 SELECT 语句返回的可更新记录集上定义主键。
- SELECT 语句可以引用视图或存储过程,但是引用的视图或存储过程必须仅引用一个表,并且必须是可更新的。
- 当指定 TRACKINGONWITHINDEXES 时,将根据 LocalTableName 中指定的 SQL Server Compact Edition 本地表,创建位于 SQL Server 表上且与 SQLSelectString 中所指定列相关的索引。
- 注意 如果用户要更新设备上的请求表,然后将更改的记录推送回原始的 SQL Server 表,则必须指定 TRACKINGON 或 TRACKINGONWITHINDEXES。当应用程序调用 Push 方法时,SQL Server Compact Edition 将使用更改跟踪信息在本地 SQL Server Compact Edition 表中查找已插入、更新和删除的记录,并将这些更改传回 SQL Server。