Backup compression and Virtual Device Interface (VDI)

People often ask if they can get native SQL Server backup compression using VDI interface. The simple answer is ‘yes’ but there are few things you need to be aware of as described below. You can get details on VDI by clicking link-to-VDI-Specifications.

Within the VDI protocol, the backup application specifies a TSQL backup command.  This means that the backup application can use any TSQL command line options including the option ‘WITH COMPRESSION’. In this case, the SQL Server will send a pre-compressed (using SQL native compression algorithm) data stream. However, if the server default is set to always compress, the SQL Server will not send compressed data stream to VDI initiated backup unless the application specifically requests it. The reason for this logic is that some backup applications depend on reading and interpreting the backup stream, and if SQL Server sends compressed bytes, it can potentially break the backup application.  For example, there are 3rd partly backup tools that allow extracting an object (i.e. a table) from the backup and if the backup is compressed in proprietary format, the tool will not be able to extract the object. On the other hand, if the backup application explicitly requests the backup compression, then we know that the application is expecting an opaque, compressed stream.  Secondarily, some backup applications do their own compression and may prefer to use their own algorithm.  That’s perfectly OK too.


Sunil Agarwal and Kevin Farlee