【问题标题】:Comparing a database with its backup file将数据库与其备份文件进行比较
【发布时间】:2018-09-27 13:00:56
【问题描述】:

我需要将一个数据库与同一个数据库的备份文件进行比较,只有当它们不同时才从备份文件中恢复数据库。

用例:我有一个测试服务器,我想使用远程文件系统上的备份文件恢复其上的数据库,前提是它们都不同。我正在考虑比较哈希值(但在某处读到大小有限制)。关于如何实现这一点的任何见解?另外,我想知道如何从数据库中生成哈希,并将其与备份文件的哈希进行比较。

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    您可以将当前的database LSNbackup LSN 进行比较。

    请注意,由于检查点,您的数据库原始数据库将很快发生分歧,即使数据没有被触及。

    与您可能想要的最接近的是log shipping。它允许您最小化原始数据库和测试数据库之间的流量,但它要求您的测试数据库是只读的,并在产品上建立和维护正确的日志备份序列。

    你所问的简短回答是:不可能。

    【讨论】:

      【解决方案2】:

      我需要将一个数据库与同一个数据库的备份文件进行比较,只有当它们不同时才从备份文件中恢复数据库。

      如果不还原到不同的位置,然后比较架构定义和所有数据,就无法将备份与实时数据库进行比较。

      您可以使用replication 来保持 prod 和 test 版本同步。它已经内置了。

      如何从数据库中生成一个哈希值并将其与备份文件的哈希值进行比较

      备份文件和db文件是不同的格式,即使它们实际上代表相同的数据库状态,哈希也永远不会匹配。

      【讨论】:

      • 我如何在测试服务器上为我的数据库生成一个备份文件,然后生成一个has,然后将它与另一个备份文件的哈希值进行比较?这可能吗?
      • @Shrav 这行不通,因为每个备份都包含有关何时完成、由谁完成、数据库状态等的元数据,即使数据没有,这些也会发生变化。即使备份中的单个字节相差一位,哈希比较也会失败。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 2017-07-20
      相关资源
      最近更新 更多