J’ai récemment croisé un script utilisant la procédure stockée système sp_adduser. L’aide en ligne indique que cette procédure a pour fonctionnalité d’ajouter un nouvel utilisateur à la base courante. Pourtant, elle en fait un peu plus… Continuer la lecture
Recherche multi-critères
Une problématique récurrente au niveau SQL Server consiste à réaliser des requêtes de recherche multicritères avec des critères facultatifs. Le but est bien évidemment que chacune des combinaisons fournisse le résultat demandé avec des performances optimales. Continuer la lecture
Log complet et usage
L’expansion non contrôlée du fichier de log d’une base de données SQL Server est un sujet récurent dans les forums de discussion.
Cet article a pour objectif d’expliquer ce qu’est le fichier de log inhérent au fonctionnement de SQL Server, et les règles de base du paramétrage dont il doit faire l’objet. Continuer la lecture
Découpage de gros traitements
Un point souvent remonté lors de gros traitements d’insertion ou de mise à jour de données réside dans une expansion très (trop) importante de l’espace disque utilisé par le journal de transactions de la base de données.
Nous allons voir ici comment limiter l’expansion de ce fichier, dans le contexte du mode de restauration simple. Continuer la lecture
Où est mon enregistrement ?
Voici un petit article présentant une fonction non documentée qui permet de localiser l’endroit où est stockée une ligne donnée. Cela peut notamment permettre de situer les autres lignes présentes dans la même page, et qui pourraient subir les effets d’un verrou de la page lors d’une modification. Continuer la lecture
Une vue n’est qu’un alias
Il est très fréquent d’utiliser des vues pour simplifier la vie des personnes réalisant des requêtes, qu’il s’agisse de développeurs ou bien d’utilisateurs avancés qui réalisent des requêtes applicatives.
Mais beaucoup oublient que les vues sont, dans la plupart des cas, de simples alias, et que la requête exécutée par le moteur garde toute la charge due à la complexité de la définition des vues utilisées. Continuer la lecture
Format des dates dans les scripts générés
Lorsqu’il est nécessaire de copier des données depuis une base vers une autre, un méthode pratique consiste à utiliser le générateur de scripts, disponible depuis la version SQL Server 2005 et surtout capable de générer depuis SQL Server 2008 non seulement les scripts des structures mais aussi de générer les instructions de remplissage des tables.
Mais avez-vous déjà cherché à regarder à quoi ressemble le script généré lorsque les données à copier sont de type de date et d’heure ?
Null n’est pas une valeur
Cet article s’adresse à tous ceux et celles qui considèrent Null comme une valeur particulière. Je pense notamment aux développeurs C#, pour qui null est une valeur spécifique.
Du point de vue SQL Server, Null n’est pas une valeur, mais reflète la non connaissance d’une information. Continuer la lecture
Forçage de parcours d’index
SQL Server 2008 a quelque peu facilité le contrôle des plans d’exécutions de requêtes grâce au « conseil » FORCESEEK. Ce mot clé permet d’indiquer au moteur que l’on souhaite utiliser pleinement la structure des index pour aller chercher les données, au lieu de parcourir l’ensemble de la table.
SQL Server 2012 apporte désormais le mot clé symétrique, FORCESCAN, qui permet d’indiquer au moteur qu’il n’est pas question d’aller chercher les éléments un par un, mais qu’il est, selon l’avis du développeur en tout cas, préférable de parcourir l’ensemble de la table. Continuer la lecture
Présentation du type FileTable
Un petit papier pour présenter dans les grandes lignes une nouvelle fonctionnalité de SQL Server 2012 nommée FileTable et qui permet d’intégrer directement dans la base de données une arborescence de répertoire. Ca ressemble au FileStream déjà introduit en SQL Server 2008, mais il n’y a cette fois-ci plus besoin de passer par une API dédiée pour accéder aux données, la plupart des programmes d’édition de fichiers permettent d’agir directement sur ces données. Continuer la lecture