Perché non eseguire un backup ordinario (facile da eseguire con sqlcommand) e aggiungere una funzionalità per consentire agli utenti di ripristinare facilmente il file di backup con un clic su un pulsante?
- Puoi eseguire il backup del database con i comandi sql
- Puoi sborsare e comprimere il file di backup con i comandi sql
- Puoi anche sborsare e trasferire automaticamente il file di backup su un server web, se lo desideri.
Cosa usano gli utenti finali per consumare il tuo db? Un programma-winform? Quindi è facile fare tutto con un clic del pulsante per l'utente.
Ecco alcuni esempi di codice per questo:
Declare @CustomerID int
declare @FileName nvarchar(40)
declare @ZipFileName nvarchar(40)
declare @ZipComand nvarchar(255)
set @CustomerID=20 --Get from database instead in real life application
SET @FileName='c:\backups\myback'+ cast(@customerID as nvarchar(10))+'.bak'
SET @ZipFileName='c:\backups\myback'+ cast(@customerID as nvarchar(10))+'.zip'
--Backup database northwind
backup database northwind to [email protected]
--Zip the file, I got a commanddriven zip.exe from the net somewhere.
set @ZipComand= 'zip.exe -r '[email protected]+' '[email protected]
EXEC xp_cmdshell @zipcomand,NO_output
--Execute the batfile that ftp:s the file to the server
exec xp_cmdshell 'c:\movetoftp.bat',no_output
--Done!
Devi avere un movetoftp.bat che contenga questo (cambia ftp-server con il tuo):
ftp -s:ftpcommands.txt ftp.myftp.net
E devi avere un ftpcommands.txt che contenga questo (puoi avere questo file creato dinamicamente con il giusto file zip anche da sqlcommands, ma te lo lascio fare tu stesso):
ftpusername
ftppassword
binary
prompt n
mput c:\backups\*.zip
chiudi