复制限制

在对 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 订阅服务器使用合并复制时,存在一些发布限制。本节讲述这些限制。

订阅服务器上的架构更改限制

您可以在订阅服务器上进行某些架构更改,但不能完全更改架构。下表讲述了在订阅服务器上可以执行和不能执行的可能的架构更改:

操作 对复制的表允许

删除表

重命名表

添加/删除/移除列

更改标识列的种子或增量值

添加或删除默认值

添加或删除主键

添加或删除外键

添加或删除索引

注意:
建议不要添加/删除对用户表中复制列的索引。此操作会导致同步失败,因为复制列被视为系统列。

重命名索引

重要事项:
不能对系统表进行架构更改。

其他要求

下列规则适用于 SQL Server Compact Edition 订阅服务器:

  • 内存使用
    在请求重新初始化后的同步过程中,SQL Server Compact Edition 数据库可能会暂时增长到实际数据库大小的两倍,但在同步完成后将会收缩(基于您的自动收缩策略)。
  • 订阅筛选验证
    筛选验证使发布服务器可以在同步数据之前验证订阅服务器的筛选值。如果订阅服务器的筛选值已更改,发布服务器会要求在订阅服务器上重新初始化。在与 SQL Server 2005 进行数据同步时,SQL Server Compact Edition 可以使用筛选验证。
    注意:
    HostName 属性可为订阅指定动态筛选值。如果您希望通过指定新的 HostName 属性来更改订阅服务器的动态筛选值,则在同步前必须调用 Reinitialize 方法。
  • 区分大小写
    SQL Server Compact Edition 数据库不区分大小写。SQL Server Compact Edition 数据库中对象和数据的处理方式不同于 SQL Server 数据库中的处理方式。例如,在区分大小写的 SQL Server 数据库中,MYTABLE 和 mytable 这两个表将被视为不同的对象。在 SQL Server Compact Edition 数据库中,相同的表名称将导致命名冲突。同样,在 SQL Server Compact Edition 中,MYVALUE 和 myvalue 这两个值将会导致主键冲突,因为它们被视为相同值,但在区分大小写的 SQL Server 数据库中它们不会导致冲突。
  • 表中的列数
    SQL Server Compact Edition 分配了七个要跟踪的系统列。但是,考虑列数限制时,这些系统表不算在内。
  • NOT FOR REPLICATION 约束
    SQL Server Compact Edition 不支持 NOT FOR REPLICATION 选项。请不要使用此选项创建约束。如果数据库中的约束具有 NOT FOR REPLICATION 选项,请将其删除,然后重新创建该约束。如果指定了 NOT FOR REPLICATION 选项,则仍然会在 SQL Server Compact Edition 订阅服务器上创建约束,但该约束不包括 NOT FOR REPLICATION 语法。
  • 连接超时
    通信失败后,只要在用户可配置的超时时段内恢复连接,就可以从最后一次成功传输的数据块重新开始,恢复 SQL Server Compact Edition 订阅。这样,即使基本传输不可靠或临时不可用,也可以进行同步。
  • 快照
    SQL Server Compact Edition 同时支持默认和备用的快照位置选项。若要指定备用快照位置,您可以通过使用 sp_addmergepublication 存储过程或使用 SQL Server Management Studio 更改现有发布的属性来设置此选项。
    • 使用 sp_addmergepublication 存储过程
      @snapshot\_in\_defaultfolder 选项设置为 FALSE,并将 @alt\_snapshot\_folder 设置为快照的备用文件夹位置。
    • 更改现有发布的发布属性
      在发布的“属性”对话框的“快照”部分中,清除“将文件放入默认文件夹”复选框,并选中“将文件放入下列文件夹”复选框,然后指定新位置。
    注意:
    SQL Server Compact Edition 不支持压缩快照选项。

有关快照的详细信息,请参阅配置快照文件夹

不传播到 SQL Server Compact Edition 订阅服务器的信息

您可以在 SQL Server 发布中包含下列项,但不将它们传播到 SQL Server Compact Edition 订阅服务器:

  • CHECK 约束
  • 扩展属性
  • 存储过程
  • 视图
  • 用户定义函数
  • 触发器

由于 SQL Server Compact Edition 复制无法传播这些项,因此您必须在基于 SQL Server Compact Edition 的应用程序中实施等效逻辑。这样做可确保 SQL Server Compact Edition 数据库与 SQL Server 数据库保持一致。例如,如果 SQL Server 数据库包含 CHECK 约束,则基于 SQL Server Compact Edition 的应用程序应在应用程序代码中实施相应的检查。

创建对本地 SQL Server Compact Edition 数据库的索引

您可以对本地 SQL Server Compact Edition 数据库创建唯一索引,即使该数据库是发布的订阅服务器。此操作非常有用,但如果对列没有唯一约束的发布服务器向订阅服务器发送非唯一数据,则可能导致出现问题。例如,您的 T 表具有 C1 和 C2 列,并且主键在 C1 上。

C1

C2

A

1

B

2

C

3

初始同步在 SQL Server Compact Edition 数据库上进行。完成此同步后,向 C2 添加了对订阅数据库的唯一索引。发布数据库未发生更改。

在下一次同步期间,SQL Server 将插入下列行:

D

3

E

3

在这种情况下,由于发布服务器尝试插入 C2 的非唯一值,因此同步失败。在从订阅数据库中删除唯一约束之前,同步将继续失败。

请参阅

帮助和信息

获取 SQL Server Compact Edition 帮助