RESTORE VERIFYONLY 锁定 Azure Blob 存储中的文件

QFD*_*Dev 6 sql-server backup restore sql-server-2012

我正在使用 SQL Server 2012 SP2 使用BACKUP TO URL语句将我的事务日志直接备份到 Azure Blob 存储中。

然后我尝试验证我的交易日志,如下所示:

RESTORE VERIFYONLY FROM  URL = 'https://mystore.blob.core.windows.net/logfile.trn'
WITH CREDENTIAL = 'azurecreds'
Run Code Online (Sandbox Code Playgroud)

RESTORE VERIFYONLY操作对 Azure 中的文件进行了租借,我可以使用 Azure Management Studio 的 blob 浏览器查看该文件(我创建的最后 2 个文件没有运行 RESTORE VERIFYONLY)。

Azure 管理工作室

我可以使用 Azure Management Studio 手动中断租约,但我是否做错了RESTORE VERIFYONLY在文件上留下活动租约的问题?

Pau*_*ite 3

这看起来非常类似于:

来自微软支持文章:

症状

假设您使用RESTORE HEADERONLYRESTORE FILELISTONLY命令从 Microsoft SQL Server 2014 或 SQL Server 2012 中的 Windows Azure Blob 存储服务恢复数据库。该命令完成后,您将无法删除备份文件。

原因

出现此问题的原因是备份文件存在无限租约。在某些情况下,内部线程之间的某些竞争条件会导致租约无法释放。

这在 SQL Server 2012 SP2 的累积更新 4 中被标记为首次修复。虽然修复没有RESTORE VERIFYONLY明确提及,但您一定应该在将其报告为错误之前检查一下。

在撰写本文时,SQL Server 2012 的最新 Service Pack 是SP3,其中还包括上述修复。

最后,为了记录GregGalloway最初在该问题的评论中留下的内容,您可以使用以下 MSDN 文章中的脚本删除活动租约:

删除具有有效租用的备份 Blob 文件