SQLBlog Nederland

Hoe backup ik mijn Database?

Dit artikel geeft een beschrijving hoe je een Microsoft SQL Server database kunt scripten. Dit script bevat de complete databasestructuur en alle objecten binnen de database zoals functies en Stored Procedures.


Als je regelmatig mutaties uitvoert op een database is het handig om een back-up te hebben van de structuur van de database en van alle objecten binnen deze database. Onderstaande Stored Procedure kun je hiervoor gebruiken, deze maakt een Database-script aan van de opgegeven database. De naam van het script wordt “Naam_Database_Datum_RandomNummer”.

CREATE PROCEDURE [dbo].[sp_GenDBscript] @vcDatabase as Varchar(50)
AS
DECLARE @vcPath            as Varchar(150)
DECLARE @vcCMD            as Varchar(150)
DECLARE @vcParam        as Varchar(150)
DECLARE @vcTotcmd        as Varchar(250)
DECLARE @vcDate            as Varchar(10)
DECLARE @vcTextPath        as Varchar(150)
DECLARE @vcTextFile        as Varchar(150)
DECLARE @vcMkdirStr        as Varchar(150)
DECLARE @vcTime            as Varchar(150)
DECLARE @iRC            as Int

Set @vcTime = REPLACE(Convert(varchar,getdate(), 114),':','')
SET @vcDate = Convert(varchar, getdate(), 112)
SET @vcTextPath = 'E:SQLSCRIPTS' + @vcDatabase
SET @vcTextFile = @vcDatabase + '_' + @vcDate + '_' + @vcTime + '.sql'
SET @vcMkdirStr = 'mkdir ' + @vcTextPath

--checking if dir exist, If it doesnt exist it creates it
EXEC @iRC = master.dbo.xp_cmdshell @vcMkdirStr, NO_OUTPUT
IF @iRC <> 0
BEGIN
exec master.dbo.xp_cmdshell @vcMkdirStr , NO_OUTPUT
END

SET @vcPath = '"C:Program FilesMicrosoft SQL Server90ToolsPublishingSqlPubWiz.exe"'
SET @vcParam = ' script ' + @vcTextPath + '' + @vcTextFile + ' -schemaonly -d ' + @vcDatabase
SET @vcTotcmd =  @vcPath + @vcParam

print @vcTotcmd

EXEC master..xp_cmdshell @vcTotcmd

 

Het script voer je vervolgens uit met deze statement:

 

EXEC sp_GenDBscript 'AdventureWorks'

 

Het is nu ook mogelijk om het scripten van de database te schedulen, bijvoorbeeld aan het begin van een ETL-Run. Let even op hard-coded velden in de Stored Procedure (E:SQLSCRIPTS ), dit is de locatie van de output van het script (waar moet hij de file neerzetten).

Mobiele versie afsluiten