sql >> Database >  >> RDS >> Sqlserver

Koppel de SQL Server-database programmatisch los om het mdf-bestand te kopiëren

Waarom maak je geen gewone back-up (gemakkelijk te doen met sqlcommand) en voeg je een functie toe waarmee de gebruikers dat back-upbestand gemakkelijk kunnen herstellen met een klik op een knop?

  • U kunt een back-up van de database maken met sql-commando's
  • Je kunt het back-upbestand uitpakken en zippen met sql-commando's
  • Je kunt het back-upbestand ook automatisch uitschalen en ftpn naar een webserver als je wilt.

Wat gebruiken de eindgebruikers om uw db te consumeren? Een winform-programma? Dan is het gemakkelijk gedaan om alles te doen met een klik op de knop voor de gebruiker.

Hier zijn enkele voorbeeldcodes daarvoor:

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!

Je moet een movetoftp.bat hebben die dit bevat (wijzig ftp-server in jouw):
ftp -s:ftpcommands.txt ftp.myftp.net

En je moet een ftpcommands.txt hebben die dit bevat (je kunt dit bestand ook dnamically laten maken met precies het juiste zip-bestand door sqlcommands, maar dat laat ik je zelf doen):

ftpusername
ftppassword
binair
prompt n
mput c:\backups\*.zip
quit



  1. selecteer uit ... - gebaseerd op een waarde in JSON-indeling

  2. Selecteer rijen uit een MySQL-tabel waarbij waarde een array is?

  3. haal de rij met de hoogste waarde in MySQL

  4. Referentie niet ondersteund op groepsfunctie