向现有出版物添加文章并删除文章

创建发布后,可以添加和删除文章。 可以随时添加项目,但删除项目所需的作取决于复制类型以及删除项目的时间。

添加文章

添加项目涉及:将项目添加到发布;为发布创建新快照;同步订阅以应用新文章的架构和数据。

注释

如果将项目添加到合并发布和现有项目取决于新项目,则必须使用sp_addmergearticlesp_changemergearticle@processing_order参数为这两个项目指定处理顺序。 请考虑以下方案:发布表,但不发布表引用的函数。 如果不发布函数,则无法在订阅服务器上创建表。 将函数添加到发布时:为 sp_addmergearticle 的 @processing_order 参数指定值 1;并为sp_changemergearticle的 @processing_order 参数指定值 2,并指定参数@article的表名称。 此处理顺序可确保在依赖它的表之前在订阅服务器上创建函数。 只要函数的数字低于表的数字,就可以对每篇文章使用不同的数字。

  1. 通过以下方法之一添加一个或多个文章:

  2. 将文章添加到出版物后,你必须为该出版物创建新的快照(如果它是具有参数化筛选器的合并出版物,则所有分区也必须这样做)。 然后,分发代理或合并代理将新文章的架构和数据复制到订阅服务器(它不会重新初始化整个发布)。

  3. 创建快照后,同步订阅以复制新文章的架构和数据。

删除文章

可以随时从发布中删除文章,但必须考虑到以下行为:

  • 从发布中删除项目不会从发布数据库或订阅数据库中删除相应的对象。 如有必要,请使用 DROP <对象> 删除这些对象。 当您删除一个与其他已发布文章有关的项目时(通过外键约束),建议您手动或通过订阅服务器上的按需脚本执行来删除表格:您需指定一个脚本,该脚本应包含相应的 DROP <Object> 语句。 有关详细信息,请参阅同步期间执行脚本(复制 Transact-SQL 编程)。

  • 对于兼容级别为 90RTM 或更高版本的合并发布,可以随时删除项目,但需要新的快照。 此外:

    • 如果项目是联接筛选器或逻辑记录关系中的父项目,则必须首先删除关系,这需要重新初始化。

    • 如果项目在发布中具有最后一个参数化筛选器,则必须重新初始化订阅。

  • 对于兼容级别低于 90RTM 的合并发布,可以在初始同步订阅之前删除项目,而不考虑任何特殊注意事项。 如果在同步一个或多个订阅之后删除某个文章,则必须删除这些订阅,并重新创建和同步它们。

  • 对于快照发布或事务发布,可以在创建订阅之前不考虑任何特殊注意事项删除项目。 如果在创建一个或多个订阅后删除文章,则必须删除、重新创建和同步订阅。 有关删除订阅的详细信息,请参阅订阅发布sp_dropsubscription(Transact-SQL)。 sp_dropsubscription 允许从订阅中删除单个项目,而不是整个订阅。

  1. 从发布中删除文章需要删除该文章,并为发布创建新的快照。 删除项目会使当前快照失效;因此,必须创建新快照。

  2. 从发布中删除文章后,必须为发布创建新快照(如果这是具有参数化筛选器的合并发布,则需为全部分区创建新快照)。

如上所述,在某些情况下,删除项目需要删除、重新创建和同步订阅。 有关详细信息,请参阅 订阅发布同步数据

另请参阅

发布数据和数据库对象
重新初始化订阅
对发布数据库进行架构更改