从备份初始化事务订阅

适用于:SQL Server

虽然通常使用快照来初始化对事务发布的订阅,但也可以使用复制存储过程通过备份初始化订阅。 有关详细信息,请参阅 初始化事务订阅(不使用快照)中手动初始化订阅。

从备份初始化事务订阅服务器

  1. 对于现有的发布,请通过在发布服务器上对发布数据库执行 sp_helppublication (Transact-SQL) 来确保该发布支持从备份进行初始化操作。 请注意结果集中 allow_initialize_from_backup 的值。

    • 如果值为 1,则该发布支持此功能。

    • 如果值为 0,则在发布服务器上对发布数据库执行 sp_changepublication (Transact-SQL)。 将 @property 的值指定为 allow_initialize_from_backup ,并将 @value 的值指定为 true

  2. 对于新发布,在发布服务器上对发布数据库执行 sp_addpublication (Transact-SQL)。 将 allow_initialize_from_backup 的值指定为 true。 有关详细信息,请参阅 Create a Publication

    警告

    为了避免丢失订阅服务器数据,在将 sp_addpublicationsp_changepublication@allow_initialize_from_backup = N'true' 配合使用时,始终使用 @immediate_sync = N'true'

  3. 使用 BACKUP (Transact-SQL) 语句创建发布数据库的备份。

  4. 使用 RESTORE (Transact-SQL) 语句在订阅服务器上还原备份。

  5. 在发布服务器上对发布数据库执行存储过程 sp_addsubscription (Transact-SQL)。 指定下列参数:

    • @sync_type - 值为 initialize with backup

    • @backupdevicetype - 备份设备的类型:logical(默认)、disk 或 tape

    • @backupdevicename - 用于还原的逻辑或物理备份设备。

      对于逻辑设备,指定使用 sp_addumpdevice 创建该设备时指定的备份设备的名称。

      对于物理设备,指定完整的路径和文件名,比如 DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\BACKUP\Mybackup.dat'TAPE = '\\.\TAPE0'

    • (可选)@password - 创建备份集时提供的密码。

    • (可选)@mediapassword - 对介质集设置格式时提供的密码。

    • (可选)@fileidhint - 要还原的备份集的标识符。 例如,指定为 1 表示备份介质中的第一个备份集,而指定为 2 则表示第二个备份集。

    • (对于磁带设备是可选的)@unload - 如果完成还原后应从驱动器卸载磁带,则将值指定为 1(默认),如果不用卸载磁带,则将值指定为 0

  6. (可选)对于请求订阅,在订阅服务器上对订阅数据库执行 sp_addpullsubscription (Transact-SQL)sp_addpullsubscription_agent (Transact-SQL)。 有关详细信息,请参阅 创建请求订阅

  7. (可选)启动分发代理。 有关详细信息,请参阅 Synchronize a Pull SubscriptionSynchronize a Push Subscription