【发布时间】:2018-09-27 13:00:56
【问题描述】:
我需要将一个数据库与同一个数据库的备份文件进行比较,只有当它们不同时才从备份文件中恢复数据库。
用例:我有一个测试服务器,我想使用远程文件系统上的备份文件恢复其上的数据库,前提是它们都不同。我正在考虑比较哈希值(但在某处读到大小有限制)。关于如何实现这一点的任何见解?另外,我想知道如何从数据库中生成哈希,并将其与备份文件的哈希进行比较。
【问题讨论】:
标签: sql-server
我需要将一个数据库与同一个数据库的备份文件进行比较,只有当它们不同时才从备份文件中恢复数据库。
用例:我有一个测试服务器,我想使用远程文件系统上的备份文件恢复其上的数据库,前提是它们都不同。我正在考虑比较哈希值(但在某处读到大小有限制)。关于如何实现这一点的任何见解?另外,我想知道如何从数据库中生成哈希,并将其与备份文件的哈希进行比较。
【问题讨论】:
标签: sql-server
您可以将当前的database LSN 与backup LSN 进行比较。
请注意,由于检查点,您的数据库和原始数据库将很快发生分歧,即使数据没有被触及。
与您可能想要的最接近的是log shipping。它允许您最小化原始数据库和测试数据库之间的流量,但它要求您的测试数据库是只读的,并在产品上建立和维护正确的日志备份序列。
你所问的简短回答是:不可能。
【讨论】:
我需要将一个数据库与同一个数据库的备份文件进行比较,只有当它们不同时才从备份文件中恢复数据库。
如果不还原到不同的位置,然后比较架构定义和所有数据,就无法将备份与实时数据库进行比较。
您可以使用replication 来保持 prod 和 test 版本同步。它已经内置了。
如何从数据库中生成一个哈希值并将其与备份文件的哈希值进行比较
备份文件和db文件是不同的格式,即使它们实际上代表相同的数据库状态,哈希也永远不会匹配。
【讨论】: