从 Azure Blob 存储还原到 SQL Server 2014 时,为什么会出现“还原数据库异常终止”(错误 3013)

从 Azure Blob 存储还原到 SQL Server 2014 时,为什么会出现“还原数据库异常终止”(错误 3013)

我们的生产数据库服务器每晚都会使用BACKUP TO URLSQL Server 2014 Standard 中的命令将其数据库备份到 Azure Blob 存储。我现在正尝试将这些备份还原到我们在 Azure 中设置的新 SQL Server VM,该 VM 也运行 SQL Server 2014 Standard。我正在运行以下 SQL 命令:

RESTORE DATABASE Example FROM URL = 'https://exampleaccount.blob.core.windows.net/livedbbackups/ExampleBackup-2015-10-15T01-13-08.bak';
WITH CREDENTIAL = 'AzureBackupCredential', 
MOVE 'Example' TO 'C:\Databases\Example.mdf',
MOVE 'Example_log' TO 'C:\Databases\Example.ldf',
STATS = 5;

当我执行此操作时,还原运行了 10 多分钟,我可以在 SQL Server Management Studio 的“消息”窗口中看到它正在取得进展。然而,就在它完成 100% 之前,显示了以下错误消息。

在 Windows NT 6.3(Build 9600:)(虚拟机管理程序)上运行 Microsoft SQL Server 2014 - 12.0.4213.0(X64)标准版(64 位)的 Azure VM 上输出:

85 percent processed.
90 percent processed.
95 percent processed.
Msg 3013, Level 16, State 1, Line 5
RESTORE DATABASE is terminating abnormally.

在 Google 上搜索“SQL Server 错误 3013”或“SQL Server 恢复数据库异常终止”会产生很多页面,提示我的数据库文件已损坏。不过,我不这么认为,因为我可以运行完全相同的 SQL在运行 SQL Server 2014 Express 的笔记本电脑上,我得到以下输出:

在 Windows NT 6.3(Build 10240:)(虚拟机管理程序)上运行 Microsoft SQL Server 2014 - 12.0.2269.0(X64)Express Edition(64 位)的笔记本电脑上的输出:

85 percent processed.
90 percent processed.
95 percent processed.
100 percent processed.
Processed 233600 pages for database 'Example', file 'Example' on file 1.
Processed 5 pages for database 'Example', file 'Example_log' on file 1.
RESTORE DATABASE successfully processed 233605 pages in 205.802 seconds (8.867 MB/sec).

这两个恢复语句都是针对完全相同的 URL 运行的,并且使用的是相同的未更改的备份文件。如果它在我的本地 SQL Server Express 副本上正确恢复,那么它就不会损坏,对吗?

以下是我试图排除的一些其他可能的原因:

  • 版本不匹配- 备份是在运行 Microsoft SQL Server 2014 - 12.0.2269.0 (X64) 标准版 (64 位) 的服务器上运行的。还原是在运行 Microsoft SQL Server 2014 - 12.0.4213.0 (X64) 标准版 (64 位) 的服务器上运行的。这些版本号是通过SELECT @@VERSION在每台服务器上运行来确定的。
  • 权限错误-RESTORE HEADERONLY和均可RESTORE FILELISTONLY在无法恢复数据库的 Azure VM 上正常工作。
  • 可用空间- Azure VM 上的 C: 驱动器有超过 80 GB 的可用空间。
  • 网络连接- 我没有做过任何广泛的测试,但考虑到运行 SQL Server 的 VM 在 Azure 中运行,并且备份文件也在 Azure 中,我认为它相当稳定。文件下载和使用浏览器的简单测试似乎表明连接既稳定又快速。

有问题的数据库在还原时大约有 2 GB,日志文件有 5 GB。我在 Azure 中存储了同一数据库的其他备份,尝试还原其中任何一个时都会得到相同的结果(在本地 SQL Server Express 2014 上有效,在 Azure VM SQL Server Standard 2014 上失败)。

有什么想法可能造成这种情况以及如何解决?

答案1

这个帖子有点旧了,但我今天也遇到了同样的问题。前段时间我从 blob 存储中进行了恢复,一切正常,一周后,同样的恢复返回错误“恢复数据库异常终止”。所以我将备份文件移到了另一个容器中,一切正常。

希望这个解决方法可以对其他人有所帮助。

相关内容