Domanda

Stavo cercando uno script sql di esempio per comprimere il mio file di backup del database (.bak) e trasferirlo in una posizione remota. Per favore condividi se ce l'hai con te.

È stato utile?

Soluzione

Puoi utilizzare xp_cmdshell per invocare il comandi per zippare e copiare. Nell'esempio qui sto usando la riga di comando di winzip (per zippare / decomprimere) e xcopy per il trasferimento di file.

EXEC master..xp_cmdshell 'C:\"Program Files"\WinZip\wzzip C:\Database.bak.zip C:\Database.bak';
EXEC master..xp_cmdshell 'C:\"Program Files"\WinZip\wzunzip -o "C:\Database.bak.zip" "C:\Database"';
EXEC master..xp_cmdshell 'xcopy "C:\Database.bak.zip" "\\networkshare\Backups" /Y'

Altri suggerimenti

xp_cmdshell è un modo, sebbene non sia l'ideale poiché abilitandolo rende il server meno sicuro.

Il mio progetto open source, SQL Server Compressed Backup , fa quello che cerchi in uno passo:

msbp.exe backup "db(database=model)" "zip64" "local(path=\\server\share\path\model.full.bak.zip)"

L'installazione di SQL Server Compressed Backup è solo " xcopy " distribuzione: non è necessario installare / disinstallare nulla, ideale se è necessario eseguire questa operazione una sola volta.

Utilizza zip64 poiché il formato zip standard ha un limite di 4 GB. Formati di compressione alternativi disponibili sono gzip e bzip2 che non hanno limiti.

Perché non utilizzare strumenti così semplici come SqlBackupAndFtp ? Fanno esattamente ciò di cui hai bisogno (backup sql + spostamento in posizione remota) con una semplice interfaccia e non è necessario scrivere alcun script.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top