我希望配置和使用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天之后自动清理它。有任何想法吗?谢谢!
答案 0 :(得分:9)
这确实与在托管备份进程调用的备份命令上设置的COMPRESSION有关。
启用调试消息指向我调用的存储过程:[msdb]。[smart_admin]。[sp_do_backup]。如果您查看此存储过程,您将看到" COMPRESSION"硬编码到它发出的各种备份命令中。
找到并替换" COMPRESSION"到" NO_COMPRESSION"应该解决你的问题。
请注意,这只需要适用于SQL 2014 Web Edition,因为其他版本支持压缩,这甚至不应该出现。