如何调试SQL Server 2014托管备份到Azure?

时间:2014-10-01 20:25:58

标签: sql-server azure azure-storage azure-storage-blobs

我希望配置和使用SQL Server 2014的托管备份到Azure功能。我已经测试了手动备份到URL T-SQL查询,并且它有效。但是,由托管备份创建的Azure功能备份无法完成。

托管备份过程在Azure存储上留下了一堆0字节备份文件,由于备份过程失败,它们全部被锁定(主动租用)。我试图找出问题所在。我的SQL Server 2014版是Web版,显然不支持压缩。但是,用于将托管备份配置为Azure功能的SQL Server Management Studio对话框不提供任何压缩选项。那么,也许它试图压缩备份文件并失败?但是,我不知道如何查看SQL Server在向Azure自动备份时实际尝试了什么。有人在那里有任何想法吗?

我在事件日志中看到以下错误...

Date 10/1/2014 3:10:39 PM Log SQL Server (Current - 10/1/2014 2:42:00 PM) Source Backup Message BACKUP failed to complete the command BACKUP LOG CaseLaw. Check the backup application log for detailed messages.

Date 10/1/2014 3:12:01 PM Log SQL Server (Current - 10/1/2014 2:42:00 PM) Source spid71 Message Error: 18210, Severity: 16, State: 1.

Date 10/1/2014 3:12:01 PM Log SQL Server (Current - 10/1/2014 2:42:00 PM) Source spid71 Message BackupVirtualDeviceFile::DetermineFileSize: SetPosition(0,EOF) failure on backup device 'https://caselaw.blob.core.windows.net/sqldb01-mssqlserver/CaseLaw_d68e6c91feba4f7f891a66cb86fcce8d_20141001151038-05.log'. Operating system error Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (409) Conflict..

我无法读取完整的409错误消息,因此我不知道实际的409错误是什么。根据MSDN,有multiple possible 409 responses

我几天来一直在努力解决这个问题。我尝试了一个运行我的T-SQL查询的手动计划任务,但是我无法使用该方法在X天之后自动清理它。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:9)

这确实与在托管备份进程调用的备份命令上设置的COMPRESSION有关。

启用调试消息指向我调用的存储过程:[msdb]。[smart_admin]。[sp_do_backup]。如果您查看此存储过程,您将看到" COMPRESSION"硬编码到它发出的各种备份命令中。

找到并替换" COMPRESSION"到" NO_COMPRESSION"应该解决你的问题。

请注意,这只需要适用于SQL 2014 Web Edition,因为其他版本支持压缩,这甚至不应该出现。