Exemple de script SQL pour compresser et transférer le fichier de sauvegarde de la base de données
-
02-07-2019 - |
Question
Je recherchais un exemple de script SQL pour compresser le fichier de sauvegarde de ma base de données (.bak) et le transférer vers un emplacement distant. S'il vous plaît partager si vous l'avez avec vous.
La solution
Vous pouvez utiliser xp_cmdshell pour appeler le commandes de compression et de copie. Dans l'exemple ci-dessous, j'utilise la ligne de commande winzip (pour zipper / décompresser) et xcopy pour transférer des fichiers.
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'
Autres conseils
xp_cmdshell est à sens unique, bien que ce ne soit pas idéal car l'activer rend le serveur moins sécurisé.
Mon projet open source, Sauvegarde compressée SQL Server , fait ce que vous recherchez en un seul. étape:
msbp.exe backup "db(database=model)" "zip64" "local(path=\\server\share\path\model.full.bak.zip)"
L'installation de SQL Server Compressed Backup s'effectue uniquement sous "xcopy". déploiement - il n'y a rien à installer / désinstaller, idéal si vous devez le faire une fois.
Il utilise zip64 car le format zip standard est limité à 4 Go. Les formats de compression alternatifs disponibles sont gzip et bzip2, qui n’ont pas de limites.
Pourquoi ne pas utiliser des outils simples tels que SqlBackupAndFtp ? Ils font exactement ce dont vous avez besoin (sauvegarde SQL + déplacement vers un emplacement distant) avec une interface simple et vous n’avez besoin d’écrire aucun script.