Sql server 快速比较两个数据库备份文件

Sql server 快速比较两个数据库备份文件,sql-server,Sql Server,在我作为开发人员的工作中,我经常将备份从文件共享恢复到本地sql server 最新的备份将不定期地发布在文件共享上。新备份与旧备份同名。我将备份文件复制到我的计算机并还原它 我想知道是否有可能将我的本地备份文件与文件共享上的文件进行快速比较,它们是否有一些嵌入式校验和之类的内容?这样我就知道复制该文件是否值得了 您可以使用MD5来完成此操作。它是任何文件的校验和 Microsoft有一个实用程序来制作这些,您可以从命令行运行它。以下是一篇文章,其中包含可下载的链接: 我最后使用创建日期来比较s

在我作为开发人员的工作中,我经常将备份从文件共享恢复到本地sql server

最新的备份将不定期地发布在文件共享上。新备份与旧备份同名。我将备份文件复制到我的计算机并还原它


我想知道是否有可能将我的本地备份文件与文件共享上的文件进行快速比较,它们是否有一些嵌入式校验和之类的内容?这样我就知道复制该文件是否值得了

您可以使用MD5来完成此操作。它是任何文件的校验和

Microsoft有一个实用程序来制作这些,您可以从命令行运行它。以下是一篇文章,其中包含可下载的链接:

我最后使用创建日期来比较sql备份。因为我在进行开发时使用比较,所以不需要对文件进行精确比较,创建MD5只需要额外的时间

使本地sql development server保持最新状态的解决方案是使用脚本。我偶尔运行此脚本以获取新数据库,或者在需要“干净”数据库备份时运行此脚本

脚本将检查新的备份文件。如果存在新文件,它会将新文件复制到本地计算机。复制后,脚本会将复制文件的创建日期设置为源备份文件的日期。在检查和复制步骤之后,脚本将运行一个
RESTORE
命令。即使未复制新文件,也会运行还原。在恢复之后,脚本调用RoundhousE()来执行GIT文件夹中所有尚未应用于数据库的更改脚本。(RoundhousE向数据库中添加了跟踪已运行脚本的表)


这样,我就可以使我的sql开发服务器保持最新状态。

正如beanfrog所提到的,通过MD5比较,很容易做到这一点。您可以下载该工具,也可以使用例如c#制作自己的工具。问题是,如果您想使用命令行工具,编写一个简短的程序,或者只是使用sql server功能来比较备份(如果只是稍后请更新您的问题以澄清),那么这个问题是开放式的。最简单的方法可能是使用sql server内置的东西,但我愿意考虑其他选项。我在800 mib备份文件上测试了这一点,在本地用了1-2秒,但在文件共享上从本地计算机运行时却花了一分钟多的时间。一次计算md5并将其与备份一起存储在文件共享上可能是一种解决方案,但我更想寻找一种快速方法(秒)来检查文件,而无需预先生成某些内容……听起来问题似乎是与共享文件的网络连接。这意味着,在共享所在的服务器上本地工作的解决方案是唯一可行的方法。这是sql server服务器吗?不,备份的位置不在sql server上,它只是放在文件共享上。网络是100Mbit。我可以看到,从服务器复制备份时,我的网卡利用率在1-2分钟内几乎达到100%。当我在不同的分支上工作时,有时会进行大量的恢复,因此我希望使用脚本轻松地进行恢复。我希望脚本始终获取最新备份,但仅在必要时从网络复制备份。文件的修改日期和时间如何?那有帮助吗?由于md5和其他解决方案通常必须遍历整个文件以查找差异,因此它们仍然可以很好地读取整个文件,这可能是一种选择。问题是复制文件时CreationTime多次似乎被重置。