发布数据库的架构更改 (SQL Server Compact)

您可以在 MicrosoftSQL Server 发布内所发布的表中添加和删除列,而不用删除并重新创建发布。如果在已发布的 SQL Server 表中添加或删除列,当下一次同步订阅时,该架构更改将发布到 SQL Server Compact 3.5 的订阅数据库中。有关详细信息,请参阅 SQL Server 联机丛书中的“发布数据库的架构更改”。

重要提示   类似于在发布服务器上添加计算列这样的架构更改会导致 SQL Server Compact 3.5 订阅服务器的同步操作失败。在发布服务器上进行任何架构更改之前,应检查所有 SQL Server Compact 3.5 架构限制。

删除项目

如果从 SQL Server 发布中删除列,对于 SQL Server Compact 3.5 订阅数据库内相应列的任何数据更改,只要还没有传播到发布服务器,在同步过程中都将放弃。下面列出了删除项目时适用的规则:

  • 如果发布兼容级别为 90RTM 或更高,将可以删除项目,而无需强制地重新初始化 SQL Server Compact 3.5 订阅。

    如果兼容级别低于 90RTM,将产生错误,因此必须重新初始化订阅。

  • 必须使用 sp_dropmergearticle 从发布中删除项目,然后才能从数据库中删除项目。

    使用 sp_dropmergearticle 删除项目时,不会从数据库中自动删除项目。它仍然以本地表的形式存在,只是不再可以复制。

添加项目

您还可以向现有发布添加项目。下面列出了添加项目时适用的规则:

  • 如果发布兼容级别为 90RTM 或更高,将可以添加项目,而无需强制地重新初始化 SQL Server Compact 3.5 订阅。

    如果兼容级别低于 90RTM,将产生错误,因此必须重新初始化订阅。

  • 表必须先添加到数据库,然后才能添加到发布中。

  • 通过使用 sp_addmergearticle,可以将项目添加发布中。

  • 对于发布中存在的其他项目,已经添加到订阅中的表可以包含对这些项目的约束。

    例如,某发布中包含 Employees、Customers 和 Orders 表。假设随后向该发布添加了 OrderDetails 表。那么,OrderDetails 表可以包含对 Orders 表的外键约束。

重要

对于现有已发布的 SQL Server 表,如果添加的列是标识列,则必须重新初始化 SQL Server Compact 3.5 订阅服务器。