手动初始化订阅

适用于:SQL ServerAzure SQL 托管实例

本主题将介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中手动初始化订阅。 虽然初始快照通常用于初始化订阅,但如果架构和初始数据已经在订阅服务器上存在,则可以在不使用快照的情况下初始化对发布的订阅。

开始之前

限制和局限

  • 如果在将数据及架构复制到订阅服务器和手动初始化订阅之间的时间段内,在使用事务复制发布的数据库上进行了某活动,则此活动导致的更改可能不会复制到订阅服务器。

使用 SQL Server Management Studio

可通过将架构(通常为数据)复制到订阅数据库,手动初始化对发布的订阅。 架构和数据应与发布数据库匹配。 然后在新建订阅向导的 “初始化订阅” 页上指定订阅不需要架构和数据。 有关访问此向导的详细信息,请参阅 初始化事务订阅(不使用快照)创建请求订阅中手动初始化订阅。

首次对订阅进行同步时,复制所需的对象和元数据将复制到订阅数据库。

手动初始化对发布的订阅

  1. 确保架构和数据已复制到订阅数据库。

  2. 清除 “初始化订阅” 页中的 “初始化” 复选框。 对每个只要求复制对象和元数据的订阅执行此操作。

“使用 Transact-SQL”

可以使用复制存储过程手动初始化订阅。

手动初始化对事务发布的请求订阅

  1. 确保订阅数据库中存在架构和数据。 有关详细信息,请参阅 初始化事务订阅(不使用快照)中手动初始化订阅。

  2. 在发布服务器的发布数据库中,执行 sp_addsubscription。 指定 @publication@subscriber,为 @destination_db指定订阅服务器上包含已发布数据的数据库的名称,并将 @subscription_type 的值指定为 pull,将 @sync_type 的值指定为 replication support only。 有关详细信息,请参阅 创建请求订阅

  3. 在订阅服务器上,执行 sp_addpullsubscription。 有关更新订阅的信息,请参阅 Create an Updatable Subscription to a Transactional Publication

  4. 在订阅服务器上,执行 sp_addpullsubscription_agent。 有关详细信息,请参阅 创建请求订阅

  5. 启动分发代理以传输复制对象,并从发布服务器下载最新更改。 有关详细信息,请参阅 Synchronize a Pull Subscription

手动初始化对事务发布的推送订阅

  1. 确保订阅数据库中存在架构和数据。 有关详细信息,请参阅 初始化事务订阅(不使用快照)中手动初始化订阅。

  2. 在发布服务器的发布数据库中,执行 sp_addsubscription。 为 @destination_db指定订阅服务器上包含已发布数据的数据库的名称,并将 @subscription_type 的值指定为 push,将 @sync_type 的值指定为 replication support only。 有关更新订阅的信息,请参阅 Create an Updatable Subscription to a Transactional Publication

  3. 在发布服务器的发布数据库中,执行 sp_addpushsubscription_agent。 有关详细信息,请参阅 创建推送订阅

  4. 启动分发代理以传输复制对象,并从发布服务器下载最新更改。 有关详细信息,请参阅 同步推送订阅

手动初始化对合并发布的请求订阅

  1. 确保订阅数据库中存在架构和数据。 通过在订阅服务器上还原发布数据库的备份,即可完成此操作。

  2. 在发布服务器中,执行 sp_addmergesubscription。 指定 @publication@subscriber@subscriber_db,并将 @subscription_type 的值指定为 pull。 这样便可注册请求订阅。

  3. 在订阅服务器上,对包含已发布数据的数据库执行 sp_addmergepullsubscription。 将 @sync_type 的值指定为 none

  4. 在订阅服务器上,执行 sp_addmergepullsubscription_agent。 有关详细信息,请参阅 创建请求订阅

  5. 启动合并代理以传输复制对象,并从发布服务器下载最新更改。 有关详细信息,请参阅 Synchronize a Pull Subscription

手动初始化对合并发布的推送订阅

  1. 确保订阅数据库中存在架构和数据。 通过在订阅服务器上还原发布数据库的备份,即可完成此操作。

  2. 在发布服务器的发布数据库中,执行 sp_addmergesubscription。 为 @subscriber_db指定订阅服务器上包含已发布数据的数据库的名称,并将 @subscription_type 的值指定为 push,将 @sync_type 的值指定为 none

  3. 在发布服务器的发布数据库中,执行 sp_addmergepushsubscription_agent。 有关详细信息,请参阅 创建推送订阅

  4. 启动合并代理以传输复制对象,并从发布服务器下载最新更改。 有关详细信息,请参阅 同步推送订阅

另请参阅

初始化事务订阅(不使用快照)
备份和还原复制的数据库
复制安全最佳做法