Comment planifier les sauvegardes de la base de données standard de SOLIDWORKS PDM ?

Article par Andrew Lidstone, CSWE mis à jour le 14 juin 2017

Article

SOLIDWORKS PDM Professional fonctionne sur Microsoft SQL Standard, ce qui permet de mettre en place des plans de maintenance qui créeront automatiquement des fichiers de sauvegarde pour les bases de données PDM. En revanche, SOLIDWORKS PDM Standard fonctionne sous Microsoft SQL Express, qui ne comprend pas l'agent SQL Server et ne permet donc pas de créer des sauvegardes automatiques.

Ilest TRÈS important que les bases de données de la chambre forte SOLIDWORKS PDM Standard soient sauvegardées quotidiennement. Si vous n'avez pas encore mis en place un processus de sauvegarde des bases de données, faites-le sans tarder, car vos données sont menacées tant que vous ne l'avez pas fait (même si vous sauvegardez le dossier d'archives contenant les fichiers de la chambre forte, vous avez toujours besoin d'une sauvegarde de la base de données à restaurer en cas de défaillance du système).

Il existe deux options pour configurer des sauvegardes planifiées d'une base de données Microsoft SQL Server Express.

Option 1 : Utilitaires de troisième partie

Il existe plusieurs utilitaires, payants ou gratuits, qui peuvent faire un excellent travail de sauvegarde des bases de données. Certains de ces outils offrent même la possibilité de télécharger les sauvegardes vers un stockage en nuage ou d'envoyer des notifications par courriel si vous le souhaitez.

Quelques options sont possibles :

Remarque : ces utilitaires ne sont pas des produits SOLIDWORKS ou Javelin, cette liste est donc fournie à titre d'information uniquement. Javelin ne recommande pas spécifiquement un de ces utilitaires plutôt qu'un autre et ne peut pas garantir leur efficacité.

Lorsque vous utilisez ces utilitaires, assurez-vous que la base de données de SOLIDWORKS PDM Vault ET la base de données ConisioMasterDB sont sauvegardées.

Option 2 : Utilisation de SQL Server Management Studio et du planificateur de tâches de Windows

Une sauvegarde peut être scriptée via le SQL Server Management Studio, puis configurée pour être effectuée quotidiennement à l'aide d'un fichier batch exécuté par le planificateur de tâches intégré à Windows.

Les étapes de la création d'une sauvegarde planifiée d'une base de données hébergée dans Microsoft SQL Server Express sont expliquées dans l'article KB2019698 de la base de connaissances Microsoft.

Vous trouverez ci-dessous une légère modification de ces instructions, y compris un fichier batch un peu plus simple à configurer qui effectuera également un nettoyage des sauvegardes, en supprimant celles qui datent de plus d'un certain nombre de jours.

Pour utiliser cette méthode, l'outil SQL Server Management Studio doit être installé.

Voici les étapes :

Étape 1 : Lancez le SQL Server Management Studio et connectez-vous à l'instance nommée "SWPDM" en utilisant le compte et le mot de passe sa.

Connexion au serveur

Connexion au serveur

Étape 2 : Cliquez sur "Nouvelle requête".

Nouvelle requête

Nouvelle requête

Étape 3 : Copiez et collez le script de l'article KB2019698 de la base de connaissances Microsoft dans la fenêtre de requête (le texte de la requête est ci-dessous pour faciliter la référence). Assurez-vous que la base de données "master" est spécifiée dans la liste déroulante, puis cliquez sur "Execute". Cela créera la procédure stockée "sp_BackupDatabases" que le fichier batch déclenchera pour créer les sauvegardes.

Sauvegarde des bases de données de SOLIDWORKS PDM Standard

Copier et coller la requête

Voici le script de 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 : Ouvrez un éditeur de texte tel que Notepad puis copiez et collez le texte suivant.

::Spécifier l'emplacement du dossier pour les sauvegardes des bases de données SQL
set BACKUPPATH=c:\SQL Backup
::Spécifier le nom de la base de données PDM Vault
set PDMDATABASE=PDMVault
::Spécifier le nombre de jours de sauvegardes à conserver
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"

Remplacez "c:\SQL Backup" par le chemin d'accès du dossier dans lequel les fichiers de sauvegarde de la base de données SQL seront stockés (il doit s'agir d'un emplacement sur le disque dur local).

Remplacez "PDMVault" par le nom de la base de données de la chambre forte PDM. VEUILLEZ NOTER que ce nom peut être différent du nom de la chambre forte. Pour vérifier le nom de la base de données, développez la liste des bases de données dans le SQL Management Studio et utilisez le nom qui y figure.

Remplacez "14" par le nombre de jours pendant lesquels vous souhaitez conserver les fichiers de sauvegarde.

Editer le script

Editer le script

Étape 5 : Effectuez un enregistrement sous et changez le "Type d'enregistrement" en "Tous les fichiers". Nommez le fichier "Sqlbackup.bat" et enregistrez le fichier.

Enregistrer sous

Enregistrer sous

Étape 6 : Lancez le planificateur de tâches et cliquez sur "Créer une tâche de base" pour lancer l'assistant.

Créer une tâche de base

Créer une tâche de base

Étape 7 : Attribuez un nom à la tâche.

Attribuer un nom à la tâche

Attribuer un nom à la tâche

Étape 8 : Définissez la tâche à déclencher quotidiennement.

Définissez la tâche à déclencher quotidiennement.

Définissez la tâche à déclencher quotidiennement.

Étape 9 : Définissez l'heure à laquelle la sauvegarde doit être effectuée. Elle doit être effectuée à un moment où aucun utilisateur ne travaille dans la chambre forte.

Fixez l'heure à laquelle le back-up doit être effectué.

Fixez l'heure à laquelle le back-up doit être effectué.

Étape 10 : Définissez l'action de la tâche comme étant "Démarrer un programme".

Définir l'action de la tâche comme étant "Démarrer un programme".

Définir l'action de la tâche comme étant "Démarrer un programme".

Étape 11 :  Cliquez sur "Browse" et sélectionnez le fichier batch créé à l'étape 5. Cliquez sur Suivant puis sur Terminer pour finaliser la création de la tâche.

Finaliser la création de la tâche

Finaliser la création de la tâche

 

Liens connexes

Vous voulez en faire plus avec SOLIDWORKS PDM ?

Nos experts certifiés SOLIDWORKS PDM peuvent vous aider :

Andrew Lidstone, CSWE

Andrew Lidstone is a SOLIDWORKS Elite Application Engineer specializing in Data Management systems. He has been working in the SOLIDWORKS reseller channel since 2010 helping clients get the most from their CAD tools.