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 .).
Archives pour la catégorie SQL
Comment convertir facilement un nombre hexadécimal en entier avec SQL Server 2008
SQL Server 2008 propose une nouvelle fonctionnalité apportée à la fonction CONVERT() qui va faciliter la vie des développeurs concernant la conversion des nombres hexadécimaux en entier.
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.
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.
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.
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.
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 ?
Triggers DDL et événement DISABLE TRIGGER, ENABLE TRIGGER
Un des avantages des triggers DDL est de permettre la prévention contre tout changement non désiré. Après avoir eu une discussion avec Elsuket, nous nous sommes demandé comment empêcher la désactivation d’un trigger DML par la commande DISABLE TRIGGER.
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…
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.