Warum nicht ein gewöhnliches Backup erstellen (einfach mit sqlcommand) und eine Funktion hinzufügen, mit der die Benutzer diese Backupdatei einfach mit einem Klick auf eine Schaltfläche wiederherstellen können?
- Sie können die Datenbank mit SQL-Befehlen sichern
- Sie können die Sicherungsdatei mit SQL-Befehlen auspacken und komprimieren
- Sie können die Sicherungsdatei auch automatisch berappen und per FTP auf einen Webserver übertragen, wenn Sie möchten.
Was verwenden die Endbenutzer, um Ihre Datenbank zu konsumieren? Ein Winform-Programm? Dann ist es einfach, alles mit einem Knopfdruck für den Benutzer zu erledigen.
Hier sind einige Beispielcodes dafür:
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!
Sie müssen eine movetoftp.bat haben, die Folgendes enthält (ändern Sie den FTP-Server auf Ihren):
ftp -s:ftpcommands.txt ftp.myftp.net
Und Sie müssen eine ftpcommands.txt haben, die Folgendes enthält (Sie können diese Datei auch dynamisch mit genau der richtigen Zip-Datei von sqlcommands erstellen lassen, aber ich lasse Sie das selbst tun):
ftpusername
ftppassword
binary
prompt n
mput c:\backups\*.zip
quit