Archives de catégorie : Outils

Boîtes à outils et scripts

Ajouter les index manquants pour les clés étrangères

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.

Continuer la lecture

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.

Continuer la lecture