Vérifier l’unicité de tuples NULLables avec les index filtrés sous SQL Server 2008

Toute contrainte d’unicité entraîne la création implicite d’une index unique sur la table, dont la clé est constituée des colonnes spécifiées dans la contrainte d’unicité.

Or, lors de l’insertion d’une nouvelle ligne ou de la modification d’une des colonnes constituant la clé unique, SQL Server considère NULL comme une valeur.
Cela est faux puisque NULL n’est pas une valeur : c’est l’absence de valeur.

Avec SQL Server 2008 ont été introduits les index filtrés, qui permettent de spécifier les lignes candidates à l’indexation, par l’ajout d’une simple clause WHERE.
Dès lors, il est possible de contourner le problème posé par les contraintes d’unicité en se servant de ce type d’index …

Lire la suite

Du choix des types de données

Lors de mes participations au forum SQL Server de ce site, je vois souvent des membres qui manipulent des données qui ne sont pas de type chaîne de caractère dans une colonne de ce type.
Cela peut revenir à calculer la racine carrée de carottes, et constitue donc un non-sens.
Voici donc un inventaire de ce que j’ai pu rencontrer jusqu’ici, et qu’il ne faut surtout pas faire pour transformer une base de données en dépotoir de données !

Lire la suite

Créer des captures instantanées de bases de données

Même en phase de développement, il est important de sauvegarder une base de données.
On peut estimer qu’il n’est pas nécessaire de mettre en place une stratégie de sauvegarde, et, comme une erreur arrive vite lors des tests unitaires, il faut que l’on puisse replacer la base de données avec le jeu de données qui a été altéré par un test, sans perdre le travail de plusieurs développeurs.
Si les captures instantanées de bases de données ne permettent pas de protéger complètement l’intégrité d’une base de données, elles sont très utiles si l’on veut se prémunir des erreurs de l’utilisateur pour « restaurer » les valeurs d’une table ou récupérer une procédure stockée …
Lire la suite

Searchable Arguments, ou S-ARGs, ou comment optimiser la clause WHERE d’une requête

Bien que beaucoup d’optimisations peuvent être assurées lors du choix du matériel du serveur de base de données, et lors de la conception d’une base de données, il n’en reste pas moins que les requêtes, avant de nécessiter la recherche d’indexes permettant leur optimisation, peuvent être dans un premier temps mises au point au niveau de leur(s) contrainte(s).
C’est ce que montrent les S-ARGs, ou « Searchable Arguments »

Lire la suite

Nomination MVP

Je viens d’être nominé MVP SQL Server, et je souhaite associer à ce titre, et remercier toutes les personnes qui maintiennent ce site, et qui participent aux forums.

Je tiens à remercier plus particulièrement SQLPro qui m’a parrainé pour l’obtention de ce titre.

Je continuerai à contribuer à ce forum aussi fidèlement que je le fais depuis deux ans, tout simplement parce que cela me fait plaisir, et en me concentrant plus sur la publication d’articles complets.

@++ ;)

ElSuket