Hvorfor ikke lave en almindelig sikkerhedskopi (let at lave med sqlcommand) og tilføje en funktion, så brugerne nemt kan gendanne den sikkerhedskopifil med et klik på en knap?
- Du kan sikkerhedskopiere databasen med sql-kommandoer
- Du kan udfylde og zippe backupfilen med sql-kommandoer
- Du kan også udfylde og ftp sikkerhedskopieringsfilen automagisk til en webserver, hvis du vil.
Hvad bruger slutbrugerne til at forbruge din db? Et winform-program? Så er det nemt at gøre alt med et knapklik for brugeren.
Her er nogle eksempler på kode til 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 skal have en movetoftp.bat, der indeholder dette (skift ftp-server til din):
ftp -s:ftpcommands.txt ftp.myftp.net
Og du skal have en ftpcommands.txt, der indeholder dette (Du kan få denne fil oprettet dynamisk med den helt rigtige zip-fil af sqlcommands også, men jeg lader dig gøre det selv):
ftpusername
ftppassword
binær
prompt n
mput c:\backups\*.zip
quit