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

Each new cumulative update for SQL Server contains all the hotfixes and all the security fixes that were included with the previous cumulative update. Check out the latest 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: 11/30/2016 07:32:00 - Revision: 6.0

Microsoft SQL Server 2012 Service Pack 1, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1

  • kbqfe kbfix kbexpertiseadvanced kbsurveynew KB2867316
Feedback