技术开发 频道

SQL Mobile的RDA数据同步开发

3 RDA局限性

SQL MobileRDA主要有下面的几个限制:

1)  在使用RDAPull方法从SQL Server数据库中复制数据时,SQL语句不能使用*号代替数据字段,也就是说,我们应该将SQL语句写成“SELECT CompanyName, ContactName FROM Customers”,而不是“SELECT * FROM Customers”。

2)  SQL Mobile不支持触发器。

3)  如果需要跟踪数据表的改变,数据表中字段的个数作为为10171024个字段减去七个系统字段),那七个系统字段用于跟踪RDA数据的变化。

4)  如果Pull方法的SQL语句中包括Computed column,方法调用将失败。

5)  如果SQL Server数据表中包含IDENTITY字段。RDA无法自动管理IDENTITY字段,因为IDENTITY字段默认起始值是1,每次增量为1。可是在多个SQL Mobile数据库执行RDA的情况下,不同数据子集插入记录的IDENTITY字段可能相同。所以我们必须手工处理可能的冲突。我们可以通过“ALTER TABLESQL语句来修改数据表的“SEED”和“INCREMENT”的值。

例如,SQL Server数据表中最大的IDENTITY值为99,我们执行下面的SQL语句,再次插入记录时,IDENTITY值将为100

ALTER TABLE Orders ALTER COLUMN OrderId IDENTITY (100,1)

 


6)   对于SQL Mobile本地表结构改变,从上边的例子可以看到,我们可以对Pull方法产生的本地数据表schema进行一些改变。比如,改变数据表IDENTITY字段的初始值和增长量。除此之外,我们还可以添加或删除字段的默认值约束、添加或删除外键、添加或删除索引,以及删除表。这些操作是不会影响RDAPush方法正常执行的。

但是,我们不能进行诸如增加、删除字段或修改字段名称、修改表名称、删除主键、改变数据类型定义等操作。这些Schema的改变将造成Push方法不能正常执行。

当这些Schema改变之后,我们必须删除这些SQL Mobile数据表,通过Pull方法再次获得该数据表。

0
相关文章