SQL Server 2005/2008复制可恢复被中断的快照传递

背景

在很多情况下,客户可能会有一个很大的数据库被发布,创建这个大数据库的快照通常会是比较困难的。而且,即使被发布数据库的大小在可管理范围之内,网络的速度和可靠性也可能会使问题变得复杂。

SQL Server 2005之后,快照传递可以从之前的中断恢复了。这对于前面我们描述的那种情况来说,是一个很大的改进。

SQL Server 2005/2008中新的系统表MSsnapshotdeliverprogess,就是用来跟踪快照传递过程的。该表居于订阅数据库,包含了关于哪些快照文件被应用到订阅方的必要细节信息。对于每个成功传递到订阅方的快照文件,都会通过合并或分发代理向该表中添加一行。(关于MSsnapshotdeliverprogress表的说明,请查阅:http://msdn.microsoft.com/en-us/library/ms187398.aspx

工作机制

当中断的快照传递被重新启动时,复制(分发/合并)代理会像往常一样,在所有需要应用到订阅方的快照文件中迭代;但是有了该恢复机制之后,分发/合并代理将会检查Mssnapshotdeliveryprogress表,查看是否有快照文件已经被中断之前的快照分发转递到了订阅方。如果Mssnapshotdeliveryprogress上记录表明某个文件已经被之前中断的快照分发应用了,分发/合并代理将会跳过这个文件。

表结构(参照联机丛书)

名称

数据类型

描述

session_token

nvarchar(260)

标识从中成功传递文件的快照文件夹的路径。 对于使用参数化筛选器的发布,将在此值后追加字符串 dynsnap

progress_token_hash

int

根据 progress_token 的值生成的哈希值,用于提高给定progress_token 值的查找效率。

progress_token

nvarchar(500)

标识已成功传递的文件,其值为文件名和路径的组合。

progress_timestamp

datetime

datetime 值,指示成功传递快照文件的时间。

什么是不可恢复的?

以下快照文件是不可恢复的:

  • 索引创建(.idx)文件
  • 声明引用完整性(.dri)文件——仅在合并复制下
  • 应用到只使用DTS订阅方的.bcp文件
  • 任何用户自定义的脚本

如何复位MSsnapshotdeliveryprogress

在需要重启整个快照过程时,就有复位Mssnapshotdeliveryprogress表的需要了。

我们可以执行订阅数据库上的sp_resetsnapshotdeliveryprogress存储过程来移除Mssnapshotdeliveryprogress表中所有的行来重置快照传递 (仅适用于请求订阅模式)。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25175503/viewspace-704951/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25175503/viewspace-704951/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值