Une fonction de dépouillement d’une chaîne de valeurs séparées par des virgules

Je vous propose ici une fonction en pur T-SQL qui permet de retourner les valeurs que l’on trouve entre les virgules d’une chaîne en contenant un plus ou moins grand nombre.

Celle-ci repose sur une table de nombres, ce qui permet d’éviter de boucler par un WHILE, qui s’avère être contre-performant, SQL n’étant pas un langage itératif.
Lire la suite

Trouver et changer le propriétaire d’un job de l’Agent SQL Server

Fonctionnalité pratique pour ne pas dire nécessaire, l’Agent SQL Server est le planificateur de tâches de SQL Server.
Il permet d’effectuer des tâches très variées, qui vont de l’exécution d’une procédure stockée à celle d’un script PowerShell en passant par celle d’un package SQL Server Integration Services et bien d’autres, et ce, à intervalles de temps réguliers et planifiés.

Côté sécurité, cette fonctionnalité n’est pas en reste, puisque tout job a un propriétaire.
Il est donc requis de vérifier que le propriétaire d’un job à les droits nécessaires à l’exécution de celui-ci.

Cela peut se faire de deux façons : par l’interface graphique de SQL Server Management Studio, ou bien en requêtes.
Voyons cela plus en détails :
Lire la suite

Trouver et changer le propriétaire d’un plan de maintenance

Bien qu’incomplets en termes de fonctionnalités par rapport à une procédure stockée qui ferait la même chose, les plans de maintenance s’avèrent très simple à développer et à déployer dans un temps court. Je pense notamment à l’impossibilité de compresser des sauvegardes sous SQL Server 2008.

Comme beaucoup de choses effectuées à l’aide des interfaces graphiques proposées par SQL Server Management Studio, les effets produits par l’exécution d’une tâche ne sont pas toujours détaillés. Le propriétaire d’un plan de maintenance n’y échappe pas et est écrasé à chaque modification du plan.
Voici donc comment le trouver, et le changer.
Lire la suite

Savoir quelles collations sont utilisées au niveau colonne, base de données et instance SQL Server

Comme il est important de savoir si la collation utilisée par une colonne, une base de données ou une instance SQL Server est sensible à la casse ou aux accents, ou …, voici quelques requêtes qui permettent d’obtenir l’information très simplement :
Lire la suite

Marquer une procédure stockée comme objet système : la procédure stockée sp_MS_marksystemobject

Il peut être intéressant de pouvoir utiliser une procédure stockée dans n’importe quel contexte de base de données (sur la même instance SQL Server).
Voyons comment faire cela à l’aide de la procédure stockée système non documentée sp_MS_marksystemobject
Lire la suite

Lister toutes les contraintes de clé étrangère d’une base de données

Voici un petit snippet permettant d’obtenir la liste de toutes les contraintes de clé étrangère d’une base de données avec :
– le nom de la contrainte,
– le nom de la table référençante,
– le nom de la colonne référençante dans la table référençante,
– le nom de la table référencée,
– le nom de la colonne référencée dans la table référencée.

Lire la suite

Connaître les caractéristiques des statistiques de colonne d’une table

Voici un lot de requêtes qui retourne quelques caractéristiques intéressantes des statistiques d’une table, notamment :

– la quantité de données, en MB, qui a été échantillonnée
– la date de dernier échantillonnage
– le nom de la statistique, ainsi que les colonnes sur lesquelles la statistique échantillonne
– le nombre de lignes échantillonnées lors du dernier échantillonnage
– la densité (inverse de la sélectivité)
– le nombre de modifications dans les colonnes de la statistique depuis le dernier échantillonnage
– le SRT (Statistic Recomputation Threshold : seuil de ré-échantillonnage de la statistique)
C’est le nombre de modifications que les colonnes de la statistique doivent subir avant d’être ré-échantillonnées.
– quelques comparaisons par rapport au nombre réel de lignes de la table

Lire la suite

Différence entre un index ordonné en cluster et un index non-cluster

Nous utilisons tous les jours de nombreux indexes : heure, calendrier, annuaire, sommaire et index d’un livre, …

Passons aux bases de données : quelle est la différence entre un index cluster et un index non-cluster ?
Si la différence peut sembler obscure de prime abord, le choix des index est crucial pour la performance globale de la base de données, et de coût quasiment nul en terme de modifications à apporter au schéma de celle-ci.

Les deux types d’index sont-ils complémentaires ? Quelles sont les conséquences du choix de la clé de ceux-ci ?

Lire la suite