Custom Data Compression (third party) Scriptable! - Custom Percentage Compression http://www.red-gate.com/products/dba/sql-backup/ Script Backup Compression T-SQL SET STATISTICS IO ON SET STATISTICS TIME ON BACKUP DATABASE ReportServer TO DISK = N'D:\DBBackups\Compressed\ReportServer_CompressedBackup.bak' WITH NAME = N'ReportServer-Full Compressed Database Backup', COMPRESSION -- Specifying option here SET STATISTICS IO OFFSET STATISTICS TIME OFF Get Backup Stats SELECT bs.database_name AS DatabaseName , -- Database name backup_size/compressed_backup_size as CompressionRatio, CASE bs.type WHEN 'D' THEN 'Full' WHEN 'I' THEN 'Differential' WHEN 'L' THEN 'Log' WHEN 'F' THEN 'File or filegroup' WHEN 'G' THEN 'Differential file' WHEN 'P' THEN 'P' WHEN 'Q' THEN 'Differential partial' END AS BackupType, -- Type of database baclup bs.backup_start_date AS BackupstartDate, -- Backup start date bs.backup_finish_date AS BackupFinishDate, -- Backup finish date bmf.physical_device_name AS PhysicalDevice, -- baclup Physical localtion bs.backup_size AS [BackupSize(In bytes)], -- Normal backup size (In bytes) compressed_backup_size AS [ConmpressedBackupSize(In bytes)] -- Compressed backup size (In bytes) FROM msdb.dbo.backupset bs INNER JOIN msdb.dbo.backupmediafamily bmf ON (bs.media_set_id=bmf.media_set_id) and database_name = 'ReportServer'ORDER BY bs.backup_start_date DESC =========================CUSTOM SCRIPT FOR BACKUP/COMPRESSION USING .NET ASSEMBLIES========= Backup Compression with Script automatically to an FTP server at your data center. $assemblyInfo = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") if ($assemblyInfo.GetName().Version.Major -ge 10) { # sql server version is 2008 or later, also load these other assemblies [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMOExtended') | Out-Null [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SQLWMIManagement') | Out-Null } $s = new-object ("Microsoft.SqlServer.Management.Smo.Server") "(local)" #this can also be "SERVERNAME\INSTANCENAME" $bkdir = "E:\Backups" #We define the folder path as a variable $dbstobackup = @(“DB1", “DB2", “DB3") $dbs = $s.Databases foreach ($db in $dbs) { if($dbstobackup -contains $db.Name) { $dbname = $db.Name $dt = get-date -format yyyyMMddHHmm $dbBackup = new-object ("Microsoft.SqlServer.Management.Smo.Backup") $dbBackup.Action = "Database" $dbBackup.Database = $dbname $dbBackup.Devices.AddDevice($bkdir + "\" + $dbname + "_db_" + $dt + ".bak", "File") $dbBackup.SqlBackup($s) } } # Create a new zip file from pipeline function Create-Zip() { param ( [string]$zipFile ); New-Zip -zipfileName $zipFile $zip = Get-Zip -zipfileName $zipFile #loop through files in pipeline foreach($file in $input) { #add file to zip and sleep 1/2 second $zip.CopyHere($file.FullName) Start-sleep -milliseconds 15000 } } #create a new zip file function New-Zip { param([string]$zipfilename) set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18)) (dir $zipfilename).IsReadOnly = $false } #get the zip file function Get-Zip { param([string]$zipfilename) if(test-path($zipfilename)) { $shellApplication = new-object -com shell.application $zipFullFilename = (get-childitem $zipfilename).FullName $shellApplication.NameSpace($zipFullFilename) } } $dtzip = get-date -format yyyyMMddHHmm $zipfilename = $bkdir + "\DB_Backups_" + $dtzip + ".zip" Get-ChildItem -path $bkdir -filter *.bak* | Sort-Object length | create-zip