Histoire de stockage : colonnes sparses avec SQL Server 2008

Les colonnes fragmentées ou SPARSE sont apparues avec la version 2008 de SQL Server. Celles-ci permettent d’optimiser le stockage pour les tables ayant une majorité de colonnes avec une absence de valeurs (NULL). Cependant ce type de colonne n’est réellement efficace que si une table possède une majorité de valeurs NULL pour les colonnes concernées. Pourquoi une telle condition ? C’est ce que nous verrons dans ce billet.

Lire la suite

Histoire de stockage : Modifications internes relative au changement de longueur d’une colonne de table

La modification de la longueur d’une colonne de table est une opération plutôt courante dans la vie d’un administrateur de bases de données mais qu’en est il du stockage interne ? Beaucoup de gens pensent par exemple que diminuer la longueur d’une colonne permet de récupérer de l’espace de stockage ou que d’augmenter la longueur d’une colonne n’a que très peu d’impact. Rien de ceci n’est vrai et nous le verrons dans la suite de ce billet.

Lire la suite

Installation de SQL Server 2008 avec le message d’erreur « Performance counter registry hive consistency check » failed.

Aujourd’hui j’ai été confronté à un problème d’installation avec SQL Server 2008. Lors de la phase de vérification via le System Configuration Checker, une erreur a été levée concernant un problème de compteur de performance avec la ruche du registre corrompu. Bien entendu le détail de l’erreur nous ramène à un KB Microsoft (http://support.microsoft.com/kb/300956) qui explique comment reconstruire les compteurs de performances lorsque ceux-ci sont corrompus mais sans effet dans mon cas. En analysant un peu la situation je me suis aperçu que j’avais installé une version anglaise de SQL Server 2008 avec une version française de Windows Server 2008. Voici pour ma part la solution qui a résolu mon problème ..

Lire la suite

TSQL Beginners Challenge 13

Il y’en a pour tout le monde des TSQL challenge !!! Ceux-ci sont plutôt destinés aux débutants désirants améliorer leur connaissance du langage SQL. Le TSQL Challenge 13 pour débutant consiste à valider des valeurs de type GUID en comptant horizontalement et verticalement les caractères « 1, 2, 3, 4, 5, A, B, C, D, E ».

Lire la suite

SQLProfiler : Analyse avancée de traces

La création d’une trace profiler est un passage quasi obligatoire lorsqu’il s’agit d’auditer les performances et les ressources monopolisées  des requêtes, lots de requêtes ou des procédures stockées qui s’exécutent sur le serveur de bases de données lors d’un audit. Bien qu’il existe les DMV depuis la version 2005, celles-ci ne peuvent être réellement utilisées qu’après une période significative de fonctionnement du serveur. Par conséquent il est plus intéressant de les utiliser dans un contexte de production que dans celui d’un audit ponctuel.

De plus, il peut exister plusieurs exécutions d’une même requête ou procédure dans une trace profiler mais avec des paramètres différents. Une question peut alors se poser : comment connaître les durées et consommations globales des différents modèles de requêtes (indépendamment de la valeur des paramètres utilisés) et pouvoir ainsi mettre l’accent sur l’optimisation de certains modèles de requêtes ?

Lors de mon dernier audit, j’ai également dû répondre à la problématique suivante : le serveur de bases de données comportait plusieurs instances SQL Server. Dans un tel cas, comment connaitre le ratio entre la consommation d’une requête exécutée sur une instance et celle de l’ensemble des instances présentes sur ce même serveur ? Cela peut être utile pour cibler les requêtes ou procédures les plus consommatrices à l’échelle du serveur et pour lesquelles il est utile de revoir la conception.

Le script suivant permet de répondre aux deux problématiques décrites ci-dessus.

Lire la suite

Histoire de journal : Fichiers multiples et journal des transactions

Dans la plupart des cas, une base de données comporte un seul fichier journal. Il peut arriver qu’il soit nécessaire de rajouter un ou plusieurs fichiers au journal des transactions à cause d’un manque d’espace libre sur une partition par exemple. Comment se remplit le journal dans ce cas ? Comment s’effectue l’allocation de nouveaux VLF dans plusieurs fichiers ? C’est ce que nous verrons dans ce billet.

Lire la suite

Log shipping : Comment déplacer les fichiers journaux d’une base de données ?

Il est parfois nécessaire de déplacer certains fichiers journaux d’une base de données. Les causes peuvent être multiples : changement dans l’architecture du sous-système disque, espace disque insuffisant . Cette opération est, dans un cas classique, relativement simple mais lorsqu’il s’agit d’une topologie log-shipping cela peut compliquer un peu les choses. Nous verrons dans ce billet comment déplacer les fichiers journaux d’une base de données selon si l’on se trouve sur le primaire ou le secondaire.

Lire la suite