Защо не направите обикновено архивиране (лесно се прави с sqlcommand) и не добавите функция за потребителите за лесно възстановяване на архивния файл с едно щракване върху бутон?
- Можете да архивирате базата данни с sql-команди
- Можете да отделите и компресирате архивния файл с sql-команди
- Можете също така да отделите и ftp резервния файл автоматично към уеб сървър, ако желаете.
Какво използват крайните потребители, за да консумират вашата база данни? Програма winform? След това е лесно да направите всичко с щракване на бутон за потребителя.
Ето примерен код за това:
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!
Трябва да имате movetoftp.bat, който съдържа това (променете ftp-сървъра на вашия):
ftp -s:ftpcommands.txt ftp.myftp.net
И вие трябва да имате ftpcommands.txt, който съдържа това (Можете да създадете този файл динамично само с правилния zip файл от sqlcommands, но ви позволявам да направите това сами):
ftpusername
ftppassword
binary
prompt n
mput c:\backups\*.zip
quit