Windows – Why does Server 2008 running SQL 2008 produce a FlushFileBuffer exception

64-bitbackupnetworkingsql-server-2008windows

I run 64bit SQL2k8 on 64bit WS2k8, and backup a database to a UNC file. The backup creates the file, copies the data, and when finishing, crashes.

Backup database Infovest to disk = '\riscsrv-dcm04\riscsrv-sql01_backups\dvc_Infovest_Z.bak' with INIT,STATS=1

98 percent processed.
99 percent processed.
Processed 3422232 pages for database 'Infovest', file 'InfoVest_Data' on file 1.
100 percent processed.
Processed 14383 pages for database 'Infovest', file 'InfoVest_Log' on file 1.
Msg 3634, Level 16, State 2, Line 1
The operating system returned the error '64(failed to retrieve text for this error. Reason: 15105)' while attempting 'FlushFileBuffers' on '\riscsrv-dcm04\riscsrv-sql01_backups\dvc_Infovest_Z.bak'.
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.

Can anyone possibly give me some advice on how NOT to get this error, and still be able to backup across the network? The two servers are both 64bit (src and dst), have plenty space and share the same gigabit switch. The db is 27gb, and other databases backup fine, though are smaller. Does size matter?? This backup also fails similarly when backup-ing to a device defined to a similar file, also in the same diretory.

I am stuck here, and would appreciate support resolving this OS error.

Kind regards
Habeeb

Best Answer

Log a support case with Microsoft, it may be a bug!

Here are some things to check/try:

Does the SQL Server service account have full share and NTFS permissions on the \riscsrv-dcm04\riscsrv-sql01_backups\ folder?

Disable any anti-virus on the remove server or anything else that may be interfering with saving files to disk.

Try striping the backup to multiple files & see if the error still occurs. To do this use multiple to disk= commands, for example:

Backup database Infovest 
to disk = '\\riscsrv-dcm04\riscsrv-sql01_backups\dvc_Infovest_Z_01.bak'
,  disk = '\\riscsrv-dcm04\riscsrv-sql01_backups\dvc_Infovest_Z_02.bak'
,  disk = '\\riscsrv-dcm04\riscsrv-sql01_backups\dvc_Infovest_Z_03.bak'

If the server is not production (or is & you have a maintenance window), try changing your maximum degree of parallelism to 1 before you do a backup & change it back when your done:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max degree of parallelism', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO