gpt4 book ai didi

c++ - 无法使用 SQL Server VSS Writer 进行差异备份

转载 作者:行者123 更新时间:2023-11-28 03:50:49 27 4
gpt4 key购买 nike

我一直在尝试开发一种工具,使用 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)

最佳答案

一段时间以来,我一直想更新这篇文章,但被我在程序中发现的所有错误所困扰。 Microsoft 的几个人帮助我确定了我遇到的问题。我只想感谢 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”选项进行完整还原。

希望这对您有所帮助。如果有人需要帮助,请更新此帖子,我会收到通知。我会帮忙的。

关于c++ - 无法使用 SQL Server VSS Writer 进行差异备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5574983/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com