SQL Server 2008, transtypage de date et optimiseur de requête

Avant SQL Server 2008, écrire une requête comportant un prédicat sur une date bien précise sans notion d’heures était plutôt fastidieux pour des requêtes sur des dates de transactions de stock par exemple où l’on désire un résultat à la journée . (Je prends l’exemple simple WHERE date =  ‘20091001’). Dans ce cas là il fallait procéder à une transformation de la colonne de type DATETIME. Cependant, le nettoyage ou suppression des heures de cette colonne pouvait poser un inconvénient majeur car cela nécessitait un transtypage (je pense aux fonctions CAST et FLOOR qui donnent le résultat 20090101 00:00:00 par exemple). Hors le seul fait de transtyper une valeur de colonne empêche l’optimiseur de  requêtes d’utiliser un index associé à cette même colonne. Cela obligeait par conséquent à écrire cette même requête avec un prédicat de date par intervalles (avec BETWEEN date AND date .).

Lire la suite

Utiliser l’historique des sauvegardes des bases pour analyser les tendances de volumétrie des données

Une de mes tâches du moment est de pouvoir justifier ou non d’une éventuelle extension de disques  sur le SAN en fonction de l’évolution du volume des données des bases. Cela peut se faire de plusieurs façons mais une méthode simple est de se baser sur l’historique des sauvegardes complètes des bases qui sont vraiment représentatives des données réelles qu’elles hébergent.

Lire la suite

Comment visualiser rapidement le planning d’exécution des jobs SQL Server ?

Lors d’un audit de serveur, il est parfois utile de visualiser rapidement le planning d’exécution des jobs SQL Server. Si les jobs sont peu nombreux, il est simple d’aller voir directement dans les propriétés des jobs depuis la console SSMS mais lorsque le nombre de jobs augmente et devient important cette manipulation devient très facilement fastidieuse.

Lire la suite

Suivre la progression d’une opération de réduction de fichiers à l’aide de la vue sys.dm_exec_requests

Il m’est arrivé de réaliser en urgence une réduction de fichiers suite à un manque de place sur le sous système de disque qui hébergeait la base de données. L’opération était anormalement longue et je me suis posé 2 questions : Y’a t’il un problème avec la réduction de fichiers et comment le vérifier ?. La vue dynamique sys.dm_exec_requests permet de réaliser cette tâche.

Lire la suite

Vues partitionnées et optimisation

Il n’y pas longtemps sur le forum msdn, un internaute rencontrait un problème de performance concernant une vue partitionnée qu’il avait mis en place. Lorsqu’il interrogeait sa vue selon un critère bien précis, l’ensemble des tables de la vue étaient concernées au lieu d’une seule comme il le prévoyait. Nous allons voir pourquoi.

Lire la suite

Sauvegardes : Vérifier la présence des fichiers de backup sur le système de fichiers

Il peut être intéressant de vérifier si les sauvegardes les plus récentes sont bien présentes sur le système de fichier. Des fichiers de sauvegarde peuvent être déplacés ou supprimés en raison d’un manque de place disque par exemple. Cela permet donc d’anticiper et d’éviter de se retrouver piéger si vous devez effectuer une restauration en urgence en se posant la question : Mais où sont mes sauvegardes ?

Lire la suite

Plan de maintenance : Durée moyenne par mois

Il peut être utile de connaître la tendance des durées des plans de maintenance en place dans le temps. D’un point vue proactif on peut remarquer par exemple que la durée d’un plan de maintenance atteindra bientôt la limite imposée par la fenêtre de maintenance et engager les actions nécessaires à l’optimisation et la réduction de celui-ci. D’un point de vue statistique, on peut par exemple voir l’évolution des durées des plans de maintenance et corréler ces informations à celle de la base elle même : Y’a t’il eu une évolution de la base ? Quels sont les changements sont intervenus ? Le volume des données est-il devenu beaucoup plus important ? etc…

Lire la suite

UDF ou SQL ensembliste ?

Ces derniers jours chez un client, j’ai dû faire face à une soudaine augmentation de l’activité CPU qui était en moyenne à 85% avec des pointes à 100% avec tous les problèmes de ralentissement d’activité que cela implique. Après une première analyse, la configuration hardware et la configuration du serveur SQL n’étaient pas en cause. J’ai donc décidé de lancer une trace avec SQL Profiler pour détecter les requêtes consommatrices en ressources CPU.

Lire la suite