从备份中初始化事务性订阅(复制 Transact-SQL 编程)

尽管事务性出版物的订阅通常使用快照进行初始化,但也可以通过复制存储过程从备份中初始化订阅。 有关详细信息,请参阅 在不使用快照的情况下初始化事务订阅

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

  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。 有关详细信息,请参阅 “创建发布”。

    警告

    若要避免缺少订阅者数据,在使用sp_addpublication@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 - 使用备份进行初始化的值。

    • @backupdevicetype - 备份设备的类型: 逻辑 (默认)、 磁盘磁带

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

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

      对于物理设备,请指定完整的路径和文件名,例如 DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL12.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. (可选)启动分发代理。 有关详细信息,请参阅 同步请求订阅同步推送订阅

另请参阅

使用备份和还原复制数据库
SQL Server 数据库的备份和还原