Dans la suite de l’article Index manqants pour les clés étrangères, il convient de prendre en main la liste (éventuellement longue) des clés étrangères listées et de chercher à constituer des index autour de ce besoin. Voici un petit complément à l’article, qui présente un script donnant en plus des instructions de création d’index.
Archives de catégorie : Outils
Reconstruction de tous les index d’une base
En environnement de développement (en espérant que vous ne le faites pas en production …), il arrive assez souvent de lancer des compactages (SHRINK) de bases de données. Mais ce type d’action a tendance à fragmenter tous les index, chose qu’il convient de réparer rapidement si l’on souhaite garder des performances acceptables.
Or il n’existe pas d’instruction Transact-SQL ou de commande (menu) sous SSMS permettant de reconstruire rapidement tous les index d’une base. Continuer la lecture
Vues obsolètes
Par défaut, les vues créées sous SQL Server sont uniquement des alias, c’est-à-dire que le code qu’elles contiennent (les tables et colonnes utilisées, …) est évalué à chaque exécution. Mais avec ce paramétrage par défaut, il est possible que les tables sous-jacentes évoluent et que l’on obtienne une vue qui, bien que définie, ne peut plus être utilisée.
Voici un petit papier au sujet des vues, et plus particulièrement autour d’une méthode permettant de détecter ces vues « fantômes ». Continuer la lecture
Défragmentation conditionnelle des index
Même si cela n’est malheureusement pas suffisamment mis en place dans la pratique, il est rappelé qu’il est très important d’avoir des plans de maintenance des bases de données SQL Server, avec notamment une étape liées à la défragmentation des index.
Mais il ne faut pas trop en faire et faire chauffer le serveur pendant toutes les plages « hors production » pour simplement refaire des index qui n’ont presque pas évolué depuis la dernière fois.
Une bonne pratique consiste à s’appuyer sur le taux de fragmentation effectif des index afin de décider quelle type d’opération appliquer : rien du tout s’il n’est pas nécessaire d’intervenir, une petite réorganisation des données au sein des pages ou bien une reconstruction totale de l’index. Voici un script permettant de réaliser cette défragmentation conditionnelle. Continuer la lecture
Copie de logins
Récemment, j’ai eu besoin de transférer les logins depuis une instance SQL vers une autre.
Je suis donc naturellement tombé sur la page suivante sur le site du support Microsoft : Comment faire pour transférer des noms d’accès et des mots de passe entre instances de SQL Server
Mais le script fourni par Microsoft omet un point très important. Continuer la lecture
Doublons d’index
Sous SQL Server, les index permettent d’optimiser l’accès aux données, notamment dans le contexte des lectures.
Néanmoins, il ne faut pas en abuser, car il sont maintenus à jour en mode synchrone lors des opérations de modification de données (ajout / suppression / modification). Il convient notament de vérifier qu’il n’y a pas de doublons d’index ce qui comprend notamment les cas d’index à plusieurs colonnes dont la ou les premières constituent déjà la définition d’un autre index. Continuer la lecture
Index manquants pour les clés étrangères
Dans la série des petites scripts utiles, voici une instruction simple permettant d’identifier les contraintes de clés étrangères pour lesquelles il manque un index dans la table parente. Un tel manque d’index peut parfois provoquer des temps de réponse extrêmement important pour de simples suppressions unitaires d’enregistrements dans une table de référence. Continuer la lecture
Liste des processus actifs
Voici un petit script très utile pour déterminer les requêtes qui sont en train de tourner sur un serveur SQL Server.
En effet, les outils tels que le générateur de profils ou bien les évènements étendus permettent de capter le début ou la fin d’un traitement, mais ne permettent pas de lister les traitements en cours d’exécution. Continuer la lecture
Régénérer les clés étrangères
J’évoquais ici un script de suppression / régénération de clés primaires. Mais une clé primaire ne peut pas être supprimée tant que des clés étrangères s’appuient sur elle. Voici donc un script permettant de générer le nécessaire pour supprimer puis reconstruire les clés étrangères sur une base de données. Continuer la lecture
Générer un script de reconstruction de clés primaires
Dans le même contexte que la reconstruction d’indexes mentionnée ici, voici le script complémentaire lié à la reconstruction de clés primaires. Etant donné qu’il n’existe pas de syntaxe permettant que créer une contrainte de clé étrangère en mode « remplacement », je présenterai ci-dessous un script générant la suppression des contraintes de clé primaire, et un script permettant de les régénérer.