我们的生产数据库服务器每天晚上使用SQL Server 2014 Standard中的BACKUP TO URL命令BACKUP TO URL数据库到Azure Blob存储。 我正在尝试将这些备份还原到我们在Azure中设置的新SQL Server VM,该SQL Server也运行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%之前,会显示以下错误消息。
运行Microsoft SQL Server 2014的Azure VM上的输出 – Windows NT 6.3(Build 9600:)(pipe理程序)上的12.0.4213.0(X64)标准版(64位):
85 percent processed. 90 percent processed. 95 percent processed. Msg 3013, Level 16, State 1, Line 5 RESTORE DATABASE is terminating abnormally.
谷歌search“SQL Server错误3013”或“SQL Server恢复数据库exception终止”产生大量的页面,表明我的数据库文件已损坏。 但是,我不这么认为,因为我可以在运行SQL Server 2014 Express的笔记本电脑上运行完全相同的SQL ,并且得到以下输出:
运行Microsoft SQL Server 2014的笔记本电脑上的输出 – Windows NT 6.3(Build 10240:)(Hypervisor)上的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的本地副本上正确恢复,它不会被损坏,对吧?
以下是我试图排除的其他一些可能的原因:
SELECT @@VERSION来确定的。 RESTORE HEADERONLY和RESTORE FILELISTONLY在不会还原数据库的Azure虚拟机上正常工作。 有问题的数据库恢复时约为2 GB,具有5 GB的日志文件。 我在Azure中存储了同一个数据库的其他备份,在尝试还原其中的任何一个时(在本地SQL Server Express 2014上工作,在Azure VM SQL Server Standard 2014上失败),我获得了相同的结果。
任何想法可能会导致这一点,以及如何解决它?