Tại sao không tạo một bản sao lưu thông thường (dễ thực hiện với sqlcommand) và thêm một tính năng để người dùng dễ dàng khôi phục lại tập tin sao lưu đó bằng một cú nhấp chuột vào nút?
- Bạn có thể sao lưu cơ sở dữ liệu bằng các lệnh sql
- Bạn có thể tách và nén tệp sao lưu bằng lệnh sql
- Bạn cũng có thể bóc tách và chuyển tự động tệp sao lưu vào máy chủ web nếu bạn muốn.
Người dùng cuối sử dụng gì để tiêu thụ db của bạn? Một chương trình winform? Sau đó, thật dễ dàng để thực hiện mọi thứ chỉ với một lần nhấp vào nút cho người dùng.
Dưới đây là một số mã ví dụ cho điều đó:
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!
Bạn phải có một movetoftp.bat chứa cái này (thay đổi ftp-server thành của bạn):
ftp -s:ftpcommands.txt ftp.myftp.net
Và bạn phải có ftpcommands.txt chứa tệp này (Bạn có thể tạo tệp này theo cách riêng với chỉ tệp zip phù hợp bằng sqlcommands, nhưng tôi để bạn tự làm điều đó):
ftpusername
ftppassword
binary
nhắc n
mput c:\ backups \ *. zip
thoát