Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Effectuer un backup planifié sur un serveur SQL Express

0000001766     -      26/09/2015

Nous fournissons ici les outils nécessaires pour réaliser un backup planifié sur un serveur SQL Express. En effet, par défaut, les outils SQL des versions Express ne permettent pas d'exécuter des tâches se déclenchant à un moment déterminé.

Notre outil, développé en C#, s'appelle ExecSql. Son utilisation doit être combinée avec l'utilitaire de tâches planifiées de Windows. (Accessoires / Outils Systèmes) Nous recommandons d'effectuer toute l'installation en local sur le serveur SQL.

Pour l'installation, il suffit de procéder comme suit :

  • créer un nouveau répertoire (indépendant de Mercator) : par exemple: C:\Program Files\ExecSql
  • y dézipper le contenu du zip ci-joint.
  • adapter le fichier ExecSql.ini (cf. ci-dessous)
  • adapter le script SQL contenu dans ExecSql.sql : il faut notamment y adapter le chemin d'accès vers le répertoire de backup. La requête renvoyant la liste des bases de données à sauvegarder peut aussi être modifiée. Si par exemple, on souhaite effectuer le backup d'une seule database, il suffit de remplacer la clause "where" par WHERE name ='MercatorDossier'
  • créer le répertoire local de backup indiqué dans le script
  • créer une nouvelle tâche planifiée via les accessoires de Windows, qui lance à heure fixe l'exécutable ExecSql.exe (Attention: bien compléter le répertoire dans lequel doit s'exécuter la tâche).

Le fichier ini contient ces options, qui peuvent être adaptées :

  • ConnectString : chaîne de connexion vers le serveur SQL au format SqlClient. Par défaut, la connexion doit être effectuée sur la DB Master.
    • Exemple en utilisant la sécurité Windows : Server=127.0.0.1\SQLEXPRESS;DataBase=Master;Integrated Security=SSPI
    • Exemple en utilisant la sécurité SQL : Server=127.0.0.1\SQLEXPRESS;DataBase=Master;Uid=yourUserId;Pwd=yourPassword
  • MailTo : adresse mail destinataire pour l'envoi de messages d'erreur ou de confirmation, à blanc si l'envoi de mail n'est pas souhaité
  • MailFrom : adresse mail expéditeur pour l'envoi de messages d'erreur ou de confirmation, à blanc si l'envoi de mail n'est pas souhaité
  • SmtpHost : serveur SMTP, à blanc si l'envoi de mail n'est pas souhaité
  • SmtpPort : port pour le serveur SMTP, par défaut 25
  • SendMailIfOk : yes/no. Permet de déterminer si un mail doit être envoyé en cas de succès de la procédure ou seulement en cas d'erreur.

Dans l'exemple ci-joint, la chaîne de connexion SQL utilise la sécurité intégrée de Windows. Dès lors, il faut bien veiller, dans les tâches planifiées de Windows, à indiquer le login et le mot de passe administrateur dans la propriété "Exécuter en tant que".

Par défaut, le script SQL effectue un backup de toutes les bases de données autres que master, model,msdb et tempdb.

Lors de la création du fichier de backup, la date est ajoutée au nom de la database afin de pouvoir maintenir un fichier distinct par jour.

Dès la première exécution, le programme crée automatiquement le fichier ExecSql.log qui contiend le log des erreurs et confirmations. Ce fichier peut être à tout moment supprimé.

N'importe quel script SQL peut être exécuté avec ce programme. Son utilisation ne se limite donc à l'exécution de backups. (Exemple : compactage de la DB, réindexation, ...)

Attention : le script SQL est réalisé sous l'entière responsabilité de la personne qui l'installe. En cas de commandes SQL syntaxiquement correctes mais détruisant une partie des données, l'outil présenté ici ne permet d'effectuer un rollback du script exécuté. Les dégâts éventuels seraient donc irrémédiables.


Suggestion : si on souhaite qu'un seul fichier BAK soit écrit et réécrasé chaque jour, il suffit de modifier le script SQL comme suit :

  • ne plus mettre la date du jour dans la variable @filename : SET @fileName = @path + @name + '.BAK'
  • rajouter la clause WITH INIT dans la commande BACKUP : BACKUP DATABASE @name TO DISK = @fileName WITH INIT


A télécharger : 0000001766.zip (77 Kb - 15/10/2009)