sql >> Databáze >  >> RDS >> Sqlserver

Programově odpojte databázi SQL Server a zkopírujte soubor mdf

Proč neudělat obyčejnou zálohu (snadno pomocí sqlcommand) a nepřidat funkci, která uživatelům umožní snadno obnovit tento záložní soubor kliknutím na tlačítko?

  • Databázi můžete zálohovat pomocí sql-commands
  • Záložní soubor můžete rozbalit a zazipovat pomocí příkazů sql
  • Pokud chcete, můžete také automaticky odeslat záložní soubor a odeslat jej na webový server.

Co používají koncoví uživatelé ke konzumaci vaší db? Winform-program? Pak je snadné udělat vše kliknutím na tlačítko za uživatele.

Zde je několik příkladů kódu:

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!

Musíte mít movetoftp.bat, který obsahuje toto (změňte ftp-server na svůj):
ftp -s:ftpcommands.txt ftp.myftp.net

A musíte mít soubor ftpcommands.txt, který toto obsahuje (Tento soubor můžete také vytvořit DNAmicky pomocí správného souboru zip pomocí sqlcommands, ale nechám vás to udělat sami):

ftpusername
ftppassword
binární
výzva n
mput c:\backups\*.zip
ukončit



  1. Aktualizační dotaz SQL a „poddotaz vrátil více než jednu hodnotu“

  2. MySQL získá seřazený seznam kontaktů podle poslední odeslané/přijaté zprávy

  3. PostgreSQL dotaz WHERE datum je starší než 3 roky

  4. MySQL select se zdá být velmi pomalý, ale nenapadá vás, jak to zlepšit?