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

Les outils clients de SQL Server (SSMS) peuvent endommager la structure de la base de données

0000002707     -      25/04/2017

La base de données de Mercator repose exclusivement sur Microsoft SQL Server. Dès lors, il est d'usage d'utiliser les outils clients de SQL Server (SSMS - Sql Server Management Studio) afin d'apporter les modifications souhaitées à cette base de données : ajouter des colonnes, modifier des types de colonnes, ... Ces opérations sont courantes et basiques. 

Certaines de ces manipulations vont inciter SSMS à détruire la table en cours de modification et à la recréer complètement. C'est, par exemple, systématiquement le cas quand on change le type d'une colonne. Cette façon de procéder peut provoquer des dégâts dans la structure de la base de données dans la mesure où SSMS n'effectue pas l'ensemble de ces modifications sous transaction.

L'équipe de programmation a testé ceci :

  • dans un dossier avec 3 millions d'enregistrements dans PIEDS_V
  • changer le type d'un champ de BIT vers INT
  • avec un time-out (Tools / Options Designers / Transaction time-out) volontairement positionné sur une valeur basse : 5 secondes
  • l'option "Prevent saving changes that require table re-creation" décochée (dans le même écran que le point précédent)

La sauvegarde de cette modification produit quelques avertissements et aboutit à un message d'erreur. Il en résulte que, sur cette table, 3 contraintes de clés étrangères (foreign keys) étaient manquantes.

 

Comment travailler en toute sécurité ?

  • Dans SSMS, cocher la case "Prevent saving changes that require table re-creation" - "Empêcher l'enregistrement de modifications qui nécessitent une recréation de la table"
  • Utiliser les commandes TSQL pour effectuer les modifications de structure, et notamment les procédures stockées proposées par Mercator : SP_DROP_COLUMN et SP_ALTER_COLUMN
  • Mettre à jour votre Mercator : toutes les versions ultérieures au 24/04/2017 vérifient la présence des foreign keys dans la base de données, lors du démarrage de Mercator. Si nécessaire, un avertissement est donné et l'utilisateur est invité à exécuter une vérification de structure depuis les outils avancés.

 

Exécutez régulièrement la vérification de structure des outils avancés. Après l'ajout d'un champ optionnel, il est possible que Mercator vous indique, par ce biais, que ce champ doit être indexé. Par ailleurs, cette fonctionnalité évolue constamment. Ceci permet au programme d'atteindre des performances toujours plus élevées. 

La constatation relative à SSMS faite dans cette page n'est pas spécifique à Mercator. Il s'agit d'une observation tout à fait générale, qui s'applique à Microsoft SQL Server en général, quelle que soit la ou les applications clientes.