0

我一直在尝试开发一种工具来使用 SQL Server VSS Writer 备份/恢复 MS SQL Server。我无法让差异备份工作!我只是好奇是否有人曾经使用 VSS 进行过差异备份。这是我一直在做的事情:

  1. 创建完整备份并存储文件和与之关联的备份组件文档。
  2. 更新数据库中的表。
  3. 通过将“ SetBackupState ”设置为VSS_BT_DIFFERENTIAL创建新备份
  4. 现在,当将现有组件添加到备份组件文档时,我在步骤 1 中从文档中找到组件的时间戳,然后使用“ SetPreviousBackupStamp ”调用它
  5. 现在拍摄快照后,我会检查每个组件并调用“ GetPartialFileCount ”API。这总是返回值 0。我假设如果现有组件发生变化,它应该给出一个大于 0 的值。

我在这里错过了什么吗?我们是否需要使用某些参数或其他东西来启动 SQL Server VSS Writer?我尝试了不同的配置,包括(Windows Server 2008/ SQL Server 2008)

4

1 回答 1

2

我一直想更新这篇文章一段时间,但被我在程序中发现的所有错误所困扰。微软的几个人帮助我解决了我遇到的问题。我只想感谢 Dileep 和 Ramesh(出于显而易见的原因,我省略了他们的姓氏)帮助我度过了难关。

以下是我的发现:

  • SQL VSS Writer 支持差异备份。

  • 进行差异备份时,请勿将“主”组件作为备份组件。

  • 始终使用以下 API 序列在每个阶段后检查 Writer 状态错误:GatherWriterStatus()、GetWriterStatusCount()、GetWriterStatus()

  • 如果编写器状态指向错误,那么事情就变得不可预测了。

  • 开始寻找工作的最佳位置是作为 VSS SDK 的一部分提供的 BETest 源代码。

  • BETest 允许备份单个数据库(完整/差异)和恢复(完整/差异),只要您正确获取 /C 选项。组件语法是:“{Writer Id}”:“完整组件名称”例如,对于我机器上的数据库“Person”,我的组件信息文件包含:“{A65FAA63-5EA8-4EBC-9DBD-A0C4DB26912A}”:“ABP -PC\SQLEXPRESS\Person";

  • 进行差异还原时,需要使用“/AdditionalRestores”选项进行完全还原。

希望这可以帮助。如果有人需要帮助,请更新此帖子,我会收到通知。我会帮助。

于 2011-06-02T17:26:55.643 回答