从备份初始化事务订阅(复制 Transact-SQL 编程)
虽然通常使用快照来初始化对事务发布的订阅,但也可以使用复制存储过程通过备份初始化订阅。 有关详细信息,请参阅 初始化事务订阅(不使用快照)中手动初始化订阅。
从备份初始化事务订阅服务器
对于现有发布,请确保发布支持通过对发布数据库执行 sp_helppublication (Transact-SQL) 从备份初始化的功能。 请注意结果集中 allow_initialize_from_backup 的值。
如果值为 1,则该发布支持此功能。
如果值为 0,sp_changepublication (发布服务器上对发布数据库执行 Transact-SQL) 。 为 @property 指定值 allow_initialize_from_backup,为 @value 指定值
true
。
对于新发布,请在发布服务器上对发布数据库执行 sp_addpublication (Transact-SQL) 。 将 allow_initialize_from_backup 的值
true
指定为 。 有关详细信息,请参阅 Create a Publication。警告
为了避免丢失订阅服务器数据,在将 sp_addpublication 与
@allow_initialize_from_backup = N'true'
一起使用时,始终使用@immediate_sync = N'true'
。使用 BACKUP (Transact-SQL) 语句创建发布数据库的备份。
使用 RESTORE (Transact-SQL) 语句还原 订阅服务器上的备份。
在发布服务器上,对发布数据库执行 sp_addsubscription (Transact-SQL) 存储过程。 指定下列参数:
@sync_type - 值为 initialize with backup。
@backupdevicetype - 备份设备的类型: logical (默认)、 disk或 tape。
@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 。
(可选) 对于请求订阅, 请对订阅数据库执行 sp_addpullsubscription (Transact-SQL) 并 sp_addpullsubscription_agent (Transact-SQL) 。 有关详细信息,请参阅 创建请求订阅。
(可选)启动分发代理。 有关详细信息,请参阅 Synchronize a Pull Subscription 或 Synchronize a Push Subscription。