切换可更新事务性订阅的更新模式

适用于:SQL Server

本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中的可更新事务订阅的更新模式之间进行切换。 可以使用新建订阅向导,为可更新的订阅指定模式。 有关使用此向导时设置模式的信息,请参阅查看和修改请求订阅属性

本主题内容

开始之前

限制和局限

  • 可以随时从立即更新向排队更新进行故障转移。 但执行该操作后,只有在已连接订阅服务器和发布服务器且队列读取器代理已将队列中的所有挂起消息应用到发布服务器后,才能恢复立即更新。

建议

  • 当对事务发布的更新订阅支持从一种更新模式故障转移到另一种更新模式时,可通过编程方式切换更新模式以应对连接发生短暂变化的情况。 可以使用复制存储过程,以编程方式并根据需要设置更新模式。 有关详细信息,请参阅 Updatable Subscriptions for Transactional Replication

使用 SQL Server Management Studio

注意

若要在创建订阅后更改更新模式,必须在创建订阅时将 update_mode 属性设置为 failover (允许从立即更新切换到排队更新)或 queued failover (允许从排队更新切换到立即更新)。 在新建订阅向导中,这些属性是自动设置的。

设置推送订阅的更新模式

  1. 在 SQL Server Management Studio 中连接到订阅服务器,然后展开服务器节点。

  2. 展开 “复制” 文件夹,再展开 “本地订阅” 文件夹。

  3. 右键单击要为其设置更新模式的订阅,然后单击 “设置更新方法”

  4. 在“设置更新方法 - <订阅服务器>: <订阅数据库>”对话框中,选择“立即更新”或“排队更新”

  5. 选择“确定”

设置请求订阅的更新模式

  1. 在“订阅属性 - <发布服务器>: <发布数据库>”对话框中,为“订阅服务器更新方法”选项选择“立即复制所做的更改”或“排队更改”的值。

  2. 选择“确定”

有关访问“订阅属性 - <发布服务器>: <发布数据库>”对话框的详细信息,请参阅查看和修改请求订阅属性

“使用 Transact-SQL”

切换更新模式

  1. 通过对请求订阅执行 sp_helppullsubscription 或对推送订阅执行 sp_helpsubscription ,验证订阅是否支持故障转移。 如果结果集中 update mode 的值为 34,则支持故障转移。

  2. 在订阅服务器上,对订阅数据库执行 sp_setreplfailovermode。 指定 @publisher或复制管理对象 (RMO) 在 @publisher_db或复制管理对象 (RMO) 在 @publication,并将下列值之一指定给 @failover_mode

    • queued - 在短暂断开连接时将故障转移到排队更新。

    • immediate - 在恢复连接后将故障转移到立即更新。