Une internaute a récemment demandé comment on pouvait calculer le PGCD de plusieurs nombres en utilisant T-SQL.
Amateur d’arithmétique, je me réjouissais de ce problème à résoudre.
Voici donc une implémentation de l’arithmétique nécessaire au calcul du PGCD de plusieurs nombres …
Lire la suite
[Utilitaires] Importer et exporter les paramètres de surface d’exposition : l’utilitaire SAC
Il peut être intéressant entre deux installations de SQL Server de se resservir des mêmes paramètres de surface d’exposition, plutôt que de passer un moment dans l’interface graphique proposée.
Heureusement, l’utilitaire en ligne de commande SAC permet d’exporter et d’importer ces paramètres très simplement.
Lire la suite
[Snippets] Génération de nombres pseudo-aléatoires
Un participant au forum SQL Server de ce site a demandé comment on peut générer 10000 nombres entiers positifs aléatoires ne contenant pas de zéros, par une requête T-SQL.
Je connaissais la fonction RAND(), qui suffit dans bien des situations car on n’a pas souvent besoin de générer une série de nombres aléatoires, pourtant celle-ci ne s’est pas prêtée au jeu …
[Agent SQL Server] Gestion de l’historique
Outre sa principale fonctionnalité de gestion d’exécutions, l’Agent SQL Server comporte quelques fonctionnalités intéressantes concernant la gestion de son historique.
Lire la suite
Ecriture ensembliste de triggers
Lors de mes participations au forum SQL Server de ce site, j’ai plusieurs fois vu des participants montrer leur trigger, qui spécifie du code non ensembliste, c’est-à -dire :
– Un traitement ligne à ligne, avec une boucle WHILE, ou un curseur,
– Une affectation de variables par sélection des tables virtuelles INSERTED et DELETED.
Dans le premier cas, il faut savoir que les SGBDR modernes sont conçus pour traiter des ensembles de données, et non pas pour traiter des lignes une par une, à la façon d’un curseur. Rappelons que les curseurs datent de COBOL (si vous vous rappelez des fichiers séquentiels indexés et de la rigidité de ce langage, cela doit vous dégoûter d’en écrire).
Par conséquent, tout traitement qui n’est pas ensembliste sera forcément plus long que celui qui l’est.
Dans le second cas, c’est en fait la première ligne mise à jour qui subira le traitement du trigger, parce qu’une variable ne peut être affectée au plus que par une seule valeur. Lire la suite
Purge du cache de plans
Il est possible qu’un jour vous trouviez dans les journaux de SQL Server le libellé suivant :
SQL Server has encountered n occurrence(s) of cachestore flush for the (partie du cache de plans) cachestore due to some database maintenance or reconfigure operations »
Ce message n’apparaît qu’à partir du SP2 de SQL Server 2005, et il est écrit par intervalles de 5 minutes.
La purge du cache de plans peut se produire dans les cas suivants :
Lire la suite
Snippets – Utilité des CTE récursives
Voici quelques snippets utilisant des CTE récursives à des fins utilitaires :
Recherche d’indexes manquants sous SQL Server 2005
Une nouvelle fonctionnalité intéressante, introduite avec SQL Server 2005, est la recherche d’indexes manquants.
Elle permet, de façon très simple, de trouver les indexes manquants qui pourraient simplifier le travail
du moteur de base de données s’ils étaient posés sur des tables de base ou des vues indexées.
Néanmoins, cette fonctionnalité comporte quelques limitations, qui doivent être prise en compte avant qu’on
ait décidé de créer l’index conseillé par SQL Server.
Comme vous le verrez, plusieurs sujets sont connexes à cet article, mais nous ne les aborderons pas ici.
Ils seront l’objet de prochains articles.
[T-SQL] Les jointures
Lors de mes participations à ce forum, je vois parfois des jointures entre les tables qui sont spécifiées à travers la clause WHERE, ou encore quelques participants demander le fonctionnement des jointures.
Voyons ce qu’il en est dans le T-SQL de SQL Server …
Gérer des couleurs en base de données
Il peut vite devenir difficile de gérer de façon uniforme les couleurs pour plusieurs applications accédant à une base de données :
– s’il s’agit d’une application web, les couleurs s’affichent sur 6 caractères alphanumériques de la base hexadécimale,
– s’il s’agit d’une application lourde, elle peut interpréter les couleurs comme un entier qui est la somme RVB, ou bien sous forme hexadécimale.
Voyons comment gérer cela simplement …