Backup del database di SQL Server 2008 7Zip
Contesto
Di recente mi sono imbattuto nella necessità di copiare FTP i backup del database fuori sede, mentre ovviamente puoi farlo con file di backup standard, i file di grandi dimensioni richiederebbero un po' di tempo, quindi abbiamo considerato 7 zip come strumento per comprimere ulteriormente i dati, poiché il il database è sempre online e la compressione incorporata ha un notevole impatto sulle prestazioni.
7 zip verrebbe eseguito tramite l'utilità xp_cmdshell che è disabilitata per impostazione predefinita. per configurarlo, utilizzare i seguenti comandi tramite sp_configure . Questo frammento è stato preso dal sito Microsoft.
SQL
-- To allow advanced options to be changed.EXEC sp_configure 'show advanced options', 1;GO-- To update the currently configured value for advanced options.RECONFIGURE;GO-- To enable the feature.EXEC sp_configure 'xp_cmdshell', 1;GO-- To update the currently configured value for this feature.RECONFIGURE;
È stato utile?
SQL
CREATE PROC dbo.DatabaseBackup(@Database NVARCHAR(100),@Folder NVARCHAR(100),@DatabaseRAR BIT)AS BEGINIF RIGHT(@Folder,1)<>'\' SET @Folder=@Folder+'\'DECLARE @Source VARCHAR(1000)=@Folder+@Database+'.bak'DECLARE @Destin VARCHAR(1000)=@Folder+@Database+'.rar'DECLARE @Command VARCHAR(1000),@CommandDel VARCHAR(1000)
DECLARE @BackupScript NVARCHAR(1000)='BACKUP DATABASE '+@Database+' TO DISK=N'''+@Source+'''WITH NOFORMAT, INIT, NAME =N'''+@Database+'_Backup'', SKIP, NOREWIND, NOUNLOAD, STATS= 10;'EXEC (@BackupScript)
IF @DatabaseRAR=1 BEGIN SET @CommandDel = N'del '+@Destin+'' SET @Command = N'"C:\Program Files\7-Zip\7z.exe" a '+@Destin+' '+@Source+' ' PRINT @Command EXEC xp_cmdshell @CommandDel EXEC xp_cmdshell @CommandENDENDGOEXEC DatabaseBackup 'db','C:\\',1
È stato utile?
Una volta impostato, un backup del database da 20 GB ha richiesto 7 minuti, quindi per comprimere è stata necessaria poco più di un'ora. Se possibile, vorresti che ciò avvenisse su un server separato o su unità separate lontane dai tuoi database per evitare conflitti di I/O del disco.
Ecco uno screenshot dei tassi di compressione del backup su un database, in cui puoi vedere che il file .rar è circa un terzo delle dimensioni del backup compresso e il backup compresso è poco più della metà di quello non compresso.
L'FTP viene eseguito separatamente al momento, ma a tempo debito costruirò l'FTP su questo codice...