FIX: You cannot restore a SQL Server 2012 or 2014 database in the Microsoft Azure binary large object storage service

Symptoms

When a SQL Server 2012 or SQL Server 2014 database contains a large transaction log file, you cannot restore the database in the Microsoft Azure binary large objects (BLOB) storage service. For example, if the transaction log file is so large that it takes longer than 3 minutes to restore it, you cannot restore the database.

For example: If you backup a very large database to URL and it may fail with the following error message:
<DateTime> Backup      Error: 3041, Severity: 16, State: 1.
<DateTime> Backup      BACKUP failed to complete the command BACKUP DATABASE BravoII_AS_PROD WITH DIFFERENTIAL. Check the backup application log for detailed messages.
<DateTime> spid55      Error: 18210, Severity: 16, State: 1.<DateTime> spid55      BackupVirtualDeviceFile::RequestDurableMedia: Flush failure on backup device 'https://xxx.blob.core.windows.net/production/yyy.bck'. Operating system error Error could not be gathered from Remote Endpoint.
And if you enable the backup to URL trace flag (DBCC TRACEON(3004, 3051, 3212,3014, 3605, 1816, -1)) you may receive the information that resembles the following in backuptoUrL log:
<DateTime>: HTTP status code 201, HTTP Status Message Created
<DateTime>: Payload: Start 7319191552, Cmd Size 1048576, Payload Size 1048576, starttime 84313.5811126, endtime 84313.6281149, duration 47.0023 ms,  attempts 1, Callback executed? True
<DateTime>: HTTP status code 201, HTTP Status Message Created
<DateTime>: IO Completion has changed the allowed parallel operations to 64, throttle count Delta of 63 threads was computed
<DateTime>: A timeout occurred on GetCommand, timeout length of 20000, will retry
<DateTime>: A timeout occurred on GetCommand, timeout length of 20000, will retry
<DateTime>: A timeout occurred on GetCommand, timeout length of 20000, will retry
<DateTime>: A timeout occurred on GetCommand, timeout length of 20000, will retry
<DateTime>: A timeout occurred on GetCommand, timeout length of 20000, will retry
<DateTime>: A timeout occurred on GetCommand, timeout length of 20000, will retry
<DateTime>: A timeout occurred on GetCommand, timeout length of 20000, will retry
<DateTime>: A timeout occurred on GetCommand, timeout length of 20000, will retry
<DateTime>: A timeout occurred on GetCommand, timeout length of 20000, will retry
<DateTime>: Backup communication with SqlServr failed, hr = 0x80770003
<DateTime>: A fatal error occurred during Engine Communication, exception information follows
<DateTime>:  Exception Info: An error occurred during data transfer operations with SqlServer, HRESULT:  0x80770003
<DateTime>:  Stack:    at Microsoft.SqlServer.VdiInterface.VDI.PerformPageDataTransfer(CloudPageBlob pageBlob, AccessCondition leaseCondition, Boolean forBackup)
   at BackupToUrl.Program.MainInternal(String[] args)

Resolution

The issue was first fixed in the following cumulative update of SQL Server.


Cumulative Update 1 for SQL Server 2014 SP1

Cumulative Update 6 for SQL Server 2012 SP2

Cumulative Update 16 for SQL Server 2012 SP1

Cumulative Update 7 for SQL Server 2014

About cumulative updates for SQL Server

Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
Properties

Article ID: 2867316 - Last Review: Nov 30, 2016 - Revision: 1

Feedback