sql >> Databasteknik >  >> RDS >> Sqlserver

Koppla bort SQL Server-databasen programmerat för att kopiera mdf-fil

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



  1. Anrop till odefinierad funktion session_register()

  2. bilden hämtas inte från databasen med sökväg

  3. Subtraktion av två lika värden är inte noll i mysql

  4. Testskript för transaktionssamtidighet för postgresql