Skip to the content

hoe maak ik een backup van mijn sql server database

Het maken van een back-up van je SQL server database kan op verschillende manieren. Ik kies ervoor om gebruik te maken van een opgeslagen procedure die je vervolgens eenvoudig opneemt in een Job of je eigen software.

De procedure kent de volgende parameters:

@strBackupDirectory: Deze parameter geeft de folder aan waar de back-up moet worden opgeslagen.

@bBackupToOneFile: Deze parameter geeft aan of de back-up 1 bestand moet worden (1) of dat je voor iedere back-up een eigen .bak bestand aan wil maken inclusief een datum en tijd in de bestandsnaam. (0)

@bAppendToBackup: Met deze parameter geef je aan of de back-up moet worden toegevoegd aan een reeds bestaande back-up. Let wel op dat je bij deze actie ook de parameter @bBackupToOneFile de waarde 1 mee moet geven.

@bVerifyBackup: Met deze parameter geef je aan of de back-up gecontroleerd moet worden na het genereren (1)

@strBackupFile: Dit is de output parameter die de naam van het back-up bestand retourneert.

 

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[usp_BackupDB]
	@strBackupDirectory	VARCHAR(256),
	@bBackupToOneFile	BIT,
	@bAppendToBackup	BIT,
	@bVerifyBackup		BIT,
	@strBackupFile		VARCHAR(256) OUTPUT
AS
	DECLARE @strDBName VARCHAR(50)
	SET @strDBName = DB_NAME()
	
	SET @strBackupFile = ''
	
	IF (@bBackupToOneFile = 1)
	BEGIN
		SET @strBackupFile = @strDBName + '.bak'
		SET @strBackupDirectory = @strBackupDirectory + @strBackupFile
		 
		IF (@bAppendToBackup = 1)
			BACKUP DATABASE @strDBName TO DISK = @strBackupDirectory WITH NOFORMAT, NOINIT
		ELSE
			BACKUP DATABASE @strDBName TO DISK = @strBackupDirectory WITH NOFORMAT, INIT
	END
	ELSE
	BEGIN
		DECLARE @dtCurrent DATETIME
		SET @dtCurrent = GETDATE()
		
		DECLARE @strYear VARCHAR(4)
		SET @strYear = CAST(DATEPART(year, @dtCurrent) AS VARCHAR(4)) 

		DECLARE @strMonth VARCHAR(2)
		SET @strMonth = CAST(DATEPART(month, @dtCurrent) AS VARCHAR(2)) 
		SET @strMonth = REPLICATE('0', 2 - LEN(@strMonth)) + @strMonth

		DECLARE @strDay VARCHAR(2)
		SET @strDay = CAST(DATEPART(day, @dtCurrent) AS VARCHAR(2)) 
		SET @strDay = REPLICATE('0', 2 - LEN(@strDay)) + @strDay

		DECLARE @strHour VARCHAR(2)
		SET @strHour = CAST(DATEPART(hour, @dtCurrent) AS VARCHAR(2)) 
		SET @strHour = REPLICATE('0', 2 - LEN(@strHour)) + @strHour

		DECLARE @strMinute VARCHAR(2)
		SET @strMinute = CAST(DATEPART(minute, @dtCurrent) AS VARCHAR(2)) 
		SET @strMinute = REPLICATE('0', 2 - LEN(@strMinute)) + @strMinute

		SET @strBackupFile = @strDBName + '_' + @strYear + @strMonth + @strDay + @strHour + @strMinute + '.bak'
		SET @strBackupDirectory = @strBackupDirectory + @strBackupFile
		 
		BACKUP DATABASE @strDBName TO DISK = @strBackupDirectory WITH NOFORMAT, INIT
	END

	IF (@bVerifyBackup = 1)
	BEGIN
		DECLARE @backupSetId AS INTEGER
		SELECT @backupSetId = position FROM msdb..backupset
		WHERE database_name = @strDBName AND
				backup_set_id = (SELECT MAX(backup_set_id) FROM msdb..backupset
									WHERE database_name = @strDBName)
	
		IF @backupSetId IS NULL
		BEGIN
			RAISERROR('Verify failed. Backup information for database %s not found.', 16, 1, @strDBName)
		END
	
		RESTORE VERIFYONLY FROM DISK = @strBackupDirectory WITH FILE = @backupSetId, NOUNLOAD, NOREWIND
	END

GO

Bizar snel software ontwikkelen

Maatwerksoftware is nu bereikbaar voor iedereen.

Je bent op zoek naar software om je proces te optimaliseren en denk hierbij aan een op maat gemaakt software pakket? Misschien heb je wel software die sterk verouderd is en ben je terughoudend in de herontwikkeling omdat er zoveel primaire processen afhangen van je software? Voor dergelijke situaties is het Whacky FrameWork een oplossing waarmee we bizar snel software kunnen ontwikkelen.

Whacky Framework

"Wie op zoek is naar een teamplayer, een man van zijn woord en een uitmuntende programmeur, dan kan ik Reinder zeker aanbevelen. Reinder bedankt en tot de volgende uitdaging."

Marijn Snoek - Fleetaccess