C’est très important que les bases de données soient sauvegardées régulièrement. Même si vous sauvegardez le dossier des archives, vous devez tout de même sauvegarder la base de données pour pouvoir restaurer en cas de panne.
Pour ce faire, vous pouvez utiliser SQL Management Studio et le planificateur de tâches de Windows.
La sauvegarde peut être créée en tant que script dans SQL Management Studio puis ajouté dans les sauvegardes quotidiennes en utilisant un fichier Batch qui sera executé par le planificateur de Tâches de Windows.
Les étapes pour créer une sauvegarde planifiée d’une base de données hébergée dans SQL Express sont expliquées dans le KB 20119698.
Ci-dessous une modification simple des étapes :
- Étape 1 : Lancer SQL Management Studio et identifiez-vous en utilisant le compte sa et le mot de passe :
- Étape 2 : cliquer sur « New Query »
- Étape 3 :
Copier et coller le script provenant de Microsoft Knowledge Base article KB2019698 dans la fenêtre de requête. Assurez-vous que la base de données « master » est spécifiée dans la liste, puis cliquez sur « Exécuter ». Cela va créer la procédure « sp_BackupDatabases » que le file Batch va activer pour créer les backups.
Ci-dessous la requête :
USE [master]
GO
/****** Object: StoredProcedure [dbo].[sp_BackupDatabases] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
— =============================================
— Author: Microsoft
— Create date: 2010-02-06
— Description: Backup Databases for SQLExpress
— Parameter1: databaseName
— Parameter2: backupType F=full, D=differential, L=log
— Parameter3: backup file location
— =============================================
CREATE PROCEDURE [dbo].[sp_BackupDatabases]
@databaseName sysname = null,
@backupType CHAR(1),
@backupLocation nvarchar(200)
AS
SET NOCOUNT ON;
DECLARE @DBs TABLE
(
ID int IDENTITY PRIMARY KEY,
DBNAME nvarchar(500)
)
— Pick out only databases which are online in case ALL databases are chosen to be backed up
— If specific database is chosen to be backed up only pick that out from @DBs
INSERT INTO @DBs (DBNAME)
SELECT Name FROM master.sys.databases
where state=0
AND name=@DatabaseName
OR @DatabaseName IS NULL
ORDER BY Name
— Filter out databases which do not need to backed up
IF @backupType=’F’
BEGIN
DELETE @DBs where DBNAME IN (‘tempdb’,’Northwind’,’pubs’,’AdventureWorks’)
END
ELSE IF @backupType=’D’
BEGIN
DELETE @DBs where DBNAME IN (‘tempdb’,’Northwind’,’pubs’,’master’,’AdventureWorks’)
END
ELSE IF @backupType=’L’
BEGIN
DELETE @DBs where DBNAME IN (‘tempdb’,’Northwind’,’pubs’,’master’,’AdventureWorks’)
END
ELSE
BEGIN
RETURN
END
— Declare variables
DECLARE @BackupName varchar(100)
DECLARE @BackupFile varchar(100)
DECLARE @DBNAME varchar(300)
DECLARE @sqlCommand NVARCHAR(1000)
DECLARE @dateTime NVARCHAR(20)
DECLARE @Loop int
— Loop through the databases one by one
SELECT @Loop = min(ID) FROM @DBs
WHILE @Loop IS NOT NULL
BEGIN
— Database Names have to be in [dbname] format since some have – or _ in their name
SET @DBNAME = ‘[‘+(SELECT DBNAME FROM @DBs WHERE ID = @Loop)+’]’
— Set the current date and time n yyyyhhmmss format
SET @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),101),’/’, ») + ‘_’ + REPLACE(CONVERT(VARCHAR, GETDATE(),108),’:’, »)
— Create backup filename in path\filename.extension format for full,diff and log backups
IF @backupType = ‘F’
SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, ‘[‘, »),’]’, »)+ ‘_FULL_’+ @dateTime+ ‘.BAK’
ELSE IF @backupType = ‘D’
SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, ‘[‘, »),’]’, »)+ ‘_DIFF_’+ @dateTime+ ‘.BAK’
ELSE IF @backupType = ‘L’
SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, ‘[‘, »),’]’, »)+ ‘_LOG_’+ @dateTime+ ‘.TRN’
— Provide the backup a name for storing in the media
IF @backupType = ‘F’
SET @BackupName = REPLACE(REPLACE(@DBNAME,'[‘, »),’]’, ») +’ full backup for ‘+ @dateTime
IF @backupType = ‘D’
SET @BackupName = REPLACE(REPLACE(@DBNAME,'[‘, »),’]’, ») +’ differential backup for ‘+ @dateTime
IF @backupType = ‘L’
SET @BackupName = REPLACE(REPLACE(@DBNAME,'[‘, »),’]’, ») +’ log backup for ‘+ @dateTime
— Generate the dynamic SQL command to be executed
IF @backupType = ‘F’
BEGIN
SET @sqlCommand = ‘BACKUP DATABASE ‘ +@DBNAME+ ‘ TO DISK = »’+@BackupFile+ »’ WITH INIT, NAME= »’ +@BackupName+ »’, NOSKIP, NOFORMAT’
END
IF @backupType = ‘D’
BEGIN
SET @sqlCommand = ‘BACKUP DATABASE ‘ +@DBNAME+ ‘ TO DISK = »’+@BackupFile+ »’ WITH DIFFERENTIAL, INIT, NAME= »’ +@BackupName+ »’, NOSKIP, NOFORMAT’
END
IF @backupType = ‘L’
BEGIN
SET @sqlCommand = ‘BACKUP LOG ‘ +@DBNAME+ ‘ TO DISK = »’+@BackupFile+ »’ WITH INIT, NAME= »’ +@BackupName+ »’, NOSKIP, NOFORMAT’
END
— Execute the generated SQL command
EXEC(@sqlCommand)
— Goto the next database
SELECT @Loop = min(ID) FROM @DBs where ID>@Loop
END
- Étape 4 : Ouvrir un éditeur de texte tel que Notepad et copier et coller le texte suivant :
——————————-
::Specify Folder Location For SQL Database Backups
set BACKUPPATH=c:\SQL Backup
::Specify Name of PDM Vault Database
set PDMDATABASE=PDMVault
::Specify How Many Days Of Backups To Keep
set numbackups=14
sqlcmd -S .\SWPDM -E -Q »EXEC sp_BackupDatabases @backupLocation=’%BACKUPPATH%\’, @databaseName=%PDMDATABASE%, @backupType=F »
sqlcmd -S .\SWPDM -E -Q »EXEC sp_BackupDatabases @backupLocation=’%BACKUPPATH%\’, @databaseName=ConisioMasterDB, @backupType=F »
forfiles /P « %BACKUPPATH% » /S /M *.BAK /D -%numbackups% /C « cmd /c del @PATH »
——————————–
Remplacer “C:\SQL Backup” avec le chemin du fichier dans lequel les fichiers de sauvegarde la base de données SQL seront enregistrés (ça doit être un emplacement sur le disque dur local)
Remplacer « PDMVault » avec le nom de la base de données de la voûte PDM. Celui-ci peut être différent du nom de la voûte.
Remplacer « 14 » avec le nombre de jours que vous avez définis pour garder les fichiers de sauvegarde.
- Étape 5 :
Sauvegarder le fichier en choisissant « All files » pour le type de sauvegarde, puis nommez le fichier « Sqlbackup.bat » et enregistrer le fichier.
- Étape 6 :
Démarrer le planificateur de tâches et cliquer sur « Créer une tâche de base » pour lancer l’assistant.
- Étape 7 : Régler la tâche sur démarrage tous les jours
- Étape 8 : Régler le temps de la sauvegarde.
- Étape 9 : Réglez l’action de tâche sur « Démarrer un programme »
- Étape 10 : Cliquez sur “Parcourir” et sélectionner le fichier Batch de l’étape 5. Puis, cliquer sur suivant pour finir la tâche.