我们的生产数据库服务器每晚都会使用BACKUP TO URL
SQL 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 存储中进行了恢复,一切正常,一周后,同样的恢复返回错误“恢复数据库异常终止”。所以我将备份文件移到了另一个容器中,一切正常。
希望这个解决方法可以对其他人有所帮助。