[翻译]关于SQL CE RDA数据同步的FAQ
2007-02-06 14:07
246 查看
Q1. 怎么判断用 RDA Pulled 的表是否是被跟踪的?什么是 RDA 订阅表?
A1. 系统表 __sysRDASubscriptions 保存了 RDA 订阅的信息。如果表被拉下来时 tracking 选项打开了(就是 RdaTrackOption.TrackingOn 或 RdaTrackOption.TrackingOnWithIndexes),那么这个表就是 RDA 订阅表。系统表将为它增加一条记录。总之,如果被拉下来的表在 __sysRDASubscriptions 表中有相应的记录,那么它就是被跟踪的。同样,如果表在被拉下来时没有打开 tracking 选项,那么这个表将没有任何 RDA 订阅信息。
Q2. 为什么我会得到“SSCE_M_RESTRICTEDDDL – 28605 - Internal error: DDL operations are not allowed on system tables. [,,,Table name,,]” 错误?这个错误表示什么含义?
A2. 当你用 RDA 拉下一个表,同时设置了 Tracking On 选项(或者当一个表是 RDA 订阅的),对该表的 DDL 操作是受到限制的,所以我们通过从中复制数据的主表来维护架构的完整性。因此,当你尝试对 RDA 订阅表执行 DDL 操作时,你将会遇到这个错误。
Q3. 如何避免“SSCE_M_TABLEALREADYEXISTS – 28573 - The LocalTableName parameter is already specified. [,,,Table name,,]”错误?
A3. 当 RDA 的 Pull 命令参数中,本地表名称或错误表名称所对应的表已经存在时,就会抛出这个错误。有两种方法可以避免这个错误:1)删除引起错误的表 2)改变 RDA Pull 参数。
Q4. 如何避免“Duplicate value cannot be inserted into a unique index. [Table name = __sysRDASubscriptions, Constraint name = c_LocalTableName]”错误?
A4. 在正常情况下,这个错误是不应该发生的。不过有个缺陷可以导致这个错误的出现。关于这个缺陷在 KB Article 920272 中有详细的讨论。如果你正在使用 VS2005 SP1,那么你应该不会再遇到这个错误了。如果你确实遇到了这个错误,那么把所有访问数据库的产品程序文件和客户应用程序放到同一个目录下(比较难理解-_-),最好是 \Windows 目录。
Q5. 如何在执行了 RDA Pull 之后改变 IDENTITY 信息?因为 RDA 不支持标识范围管理(Identity Range Management)。
A5. 虽然用 RDA 拉下来的表是受到 DDL 约束的,但是改变默认值和标识信息是没有受到限制的。你可以使用 ALTER TABLE <Table Name> ALTER COLUMN <Column Name> <int | bigint> IDENTITY(<New Seed>, <New Step>) 语句修改标识信息。
原文:RDA Subscriptions
[名词解释]
RDA:RemoteDataAccess,SQL Server CE 的远程数据访问同步方式。详细介绍看《SQL Server 2005 Mobile Edition 3.0 中的复制和远程数据访问功能的技术对比》
DDL:Data definition language,数据定义语言。
由于本人翻译水平有限,翻译得不当的地方,请参考原文,欢迎大家指正!
A1. 系统表 __sysRDASubscriptions 保存了 RDA 订阅的信息。如果表被拉下来时 tracking 选项打开了(就是 RdaTrackOption.TrackingOn 或 RdaTrackOption.TrackingOnWithIndexes),那么这个表就是 RDA 订阅表。系统表将为它增加一条记录。总之,如果被拉下来的表在 __sysRDASubscriptions 表中有相应的记录,那么它就是被跟踪的。同样,如果表在被拉下来时没有打开 tracking 选项,那么这个表将没有任何 RDA 订阅信息。
Q2. 为什么我会得到“SSCE_M_RESTRICTEDDDL – 28605 - Internal error: DDL operations are not allowed on system tables. [,,,Table name,,]” 错误?这个错误表示什么含义?
A2. 当你用 RDA 拉下一个表,同时设置了 Tracking On 选项(或者当一个表是 RDA 订阅的),对该表的 DDL 操作是受到限制的,所以我们通过从中复制数据的主表来维护架构的完整性。因此,当你尝试对 RDA 订阅表执行 DDL 操作时,你将会遇到这个错误。
Q3. 如何避免“SSCE_M_TABLEALREADYEXISTS – 28573 - The LocalTableName parameter is already specified. [,,,Table name,,]”错误?
A3. 当 RDA 的 Pull 命令参数中,本地表名称或错误表名称所对应的表已经存在时,就会抛出这个错误。有两种方法可以避免这个错误:1)删除引起错误的表 2)改变 RDA Pull 参数。
Q4. 如何避免“Duplicate value cannot be inserted into a unique index. [Table name = __sysRDASubscriptions, Constraint name = c_LocalTableName]”错误?
A4. 在正常情况下,这个错误是不应该发生的。不过有个缺陷可以导致这个错误的出现。关于这个缺陷在 KB Article 920272 中有详细的讨论。如果你正在使用 VS2005 SP1,那么你应该不会再遇到这个错误了。如果你确实遇到了这个错误,那么把所有访问数据库的产品程序文件和客户应用程序放到同一个目录下(比较难理解-_-),最好是 \Windows 目录。
Q5. 如何在执行了 RDA Pull 之后改变 IDENTITY 信息?因为 RDA 不支持标识范围管理(Identity Range Management)。
A5. 虽然用 RDA 拉下来的表是受到 DDL 约束的,但是改变默认值和标识信息是没有受到限制的。你可以使用 ALTER TABLE <Table Name> ALTER COLUMN <Column Name> <int | bigint> IDENTITY(<New Seed>, <New Step>) 语句修改标识信息。
原文:RDA Subscriptions
[名词解释]
RDA:RemoteDataAccess,SQL Server CE 的远程数据访问同步方式。详细介绍看《SQL Server 2005 Mobile Edition 3.0 中的复制和远程数据访问功能的技术对比》
DDL:Data definition language,数据定义语言。
由于本人翻译水平有限,翻译得不当的地方,请参考原文,欢迎大家指正!
相关文章推荐
- SQL SERVER CE RDA同步配置记录
- 关于同步 数据同步|数据库同步|SQL同步|
- sql server 2000与sql server ce2.0通过SqlCeRemoteDataAccess实现数据同步
- 关于SQL与Oracle 数据同步
- Related to Oracle SQL 关于选择前N行数据的SQL语句
- SQL 与oracle数据同步之 链接服务器
- SQL 数据库 复制 与订阅 实现数据同步
- 关于服务器端MySQL数据库插入数据、运行sql文件时抛出packet bigger than 'max_allowed_packet'的
- FAQ:关于 DB2 数据服务器使用的常见问题
- 演练:使用 SQL Server CE 数据库
- SQL数据同步之发布订阅
- Oracle中关于清除数据释放表空间等方面的sql
- 采用SQL CE Lite和SQL Server2000复制合并完成业务数据管理
- 关于SQL的统计数据补录
- 关于 sql 多表 外键 插入数据 提示 fk_0002 的 问题
- 用Semisynchronous Replication半同步,mk-table-checksum数据同步一致性检查,监控主从同步运行状态的脚本等方式加强SQL性能和数据审核
- 关于在嵌入式设备和服务器之间通信数据--不能用SQL,以后不用再讨论了
- 问个关于SQL 2005同步的问题
- 用hibernate翻译的sql在sqlplus可以查询出数据,但是程序查询为空
- 关于pl /sql导入导出表结构,表数据,Oracle不能改变表的所有者