sql >> Database teknologi >  >> RDS >> Sqlserver

Frakobl SQL Server-databasen programmatisk for at kopiere mdf-fil

Hvorfor ikke lave en almindelig sikkerhedskopi (let at lave med sqlcommand) og tilføje en funktion, så brugerne nemt kan gendanne den sikkerhedskopifil med et klik på en knap?

  • Du kan sikkerhedskopiere databasen med sql-kommandoer
  • Du kan udfylde og zippe backupfilen med sql-kommandoer
  • Du kan også udfylde og ftp sikkerhedskopieringsfilen automagisk til en webserver, hvis du vil.

Hvad bruger slutbrugerne til at forbruge din db? Et winform-program? Så er det nemt at gøre alt med et knapklik for brugeren.

Her er nogle eksempler på kode til 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 skal have en movetoftp.bat, der indeholder dette (skift ftp-server til din):
ftp -s:ftpcommands.txt ftp.myftp.net

Og du skal have en ftpcommands.txt, der indeholder dette (Du kan få denne fil oprettet dynamisk med den helt rigtige zip-fil af sqlcommands også, men jeg lader dig gøre det selv):

ftpusername
ftppassword
binær
prompt n
mput c:\backups\*.zip
quit



  1. Hvordan laver man en ordentlig upsert ved hjælp af sqlalchemy på postgresql?

  2. Kan du bruge aggregerede værdier inden for ON DUPLICATE KEY

  3. SQL Server FOR JSON AUTO-eksempler (T-SQL)

  4. Tablespaces i Oracle