如何管理具有参数化筛选器的合并发布的分区(RMO 编程)

若要更好地管理具有参数化筛选器的发布,可以通过使用复制管理对象 (RMO) 以编程方式创建新的订阅服务器分区、枚举现有的订阅服务器分区以及删除订阅服务器分区。 有关如何创建订阅服务器分区的信息,请参阅如何创建具有参数化筛选器的合并发布的快照(RMO 编程)。 可以获得有关现有分区的以下信息:

  • 分区所基于的值和筛选函数。

  • 为订阅服务器生成参数化快照的作业的名称。

  • 参数化快照作业上次运行的时间。

注意注意

如果发布具有的参数化筛选器可生成带有非重叠分区的订阅,并且如果特定订阅丢失并需要重新创建,则您必须执行以下操作:删除曾订阅的分区,重新创建订阅,然后重新创建该分区。 有关详细信息,请参阅参数化行筛选器。 生成发布创建脚本时,复制会为现有订阅服务器分区生成创建脚本。 有关详细信息,请参阅编写复制脚本

查看有关现有分区的信息

  1. 使用 ServerConnection 类创建与发布服务器的连接。

  2. 创建 MergePublication 类的实例。 设置发布的 NameDatabaseName 属性,并将 ConnectionContext 属性设置为步骤 1 中创建的 ServerConnection

  3. 调用 LoadProperties 方法获取该对象的属性。 如果此方法返回 false,则说明步骤 2 中的发布属性定义不正确,或者此发布不存在。

  4. 调用 EnumMergePartitions 方法,然后将结果传递至 MergePartition 对象数组。

  5. 对数组中的每个 MergePartition 对象,获取感兴趣的任何属性。

删除现有分区

  1. 使用 ServerConnection 类创建与发布服务器的连接。

  2. 创建 MergePublication 类的实例。 设置发布的 NameDatabaseName 属性,并将 ConnectionContext 属性设置为步骤 1 中创建的 ServerConnection

  3. 调用 LoadProperties 方法获取该对象的属性。 如果此方法返回 false,则说明步骤 2 中的发布属性定义不正确,或者此发布不存在。

  4. 调用 EnumMergePartitions 方法,然后将结果传递至 MergePartition 对象数组。

  5. 对数组中的每个 MergePartition 对象,确定是否应删除分区。 此决定通常基于 DynamicFilterLogin 属性的值或 DynamicFilterHostName 属性的值。

  6. 对在步骤 2 中获得的 MergePublication 对象调用 RemoveMergePartition 方法。并传递在步骤 5 中获得的 MergePartition 对象。

  7. 对已删除的每个分区重复步骤 6。