Varför inte göra en vanlig säkerhetskopia (lätt att göra med sqlcommand) och lägga till en funktion så att användarna enkelt kan återställa den säkerhetskopian med ett klick på en knapp?
- Du kan säkerhetskopiera databasen med sql-kommandon
- Du kan lägga ut och zippa säkerhetskopian med sql-kommandon
- Du kan också lägga ut och ftp säkerhetskopieringsfilen automagiskt till en webbserver om du vill.
Vad använder slutanvändarna för att konsumera din db? Ett winform-program? Då är det enkelt att göra allt med ett knapptryck för användaren.
Här är några exempelkoder för det:
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!
Du måste ha en movetoftp.bat som innehåller detta (byt ftp-server till din):
ftp -s:ftpcommands.txt ftp.myftp.net
Och du måste ha en ftpcommands.txt som innehåller detta (Du kan skapa den här filen dnamiskt med precis rätt zip-fil av sqlcommands också, men jag låter dig göra det själv):
ftpusername
ftppassword
binär
prompt n
mput c:\backups\*.zip
avsluta