Comment voir le contenu complet d’une colonne de type [n]varchar(max)

S’apercevoir, alors que l’on vient de coller une valeur d’une colonne du résultat d’une requête dans SQL Server Management Studio, que le buffer est limité, est quelque peu frustrant.
On peut parfois dépasser cette limite en se rendant dans le menu Tools > Options > Query Results > SLQ Server > Results to Grid :

Mais souvent, cela ne suffit pas. Voyons comment contourner ce petit problème :

Lire la suite

Les attentes, c’est quoi au juste ?

Les attentes sont aux threads SQL Server ce qu’elles sont aux patients dans une salle d’attente. Voilà !

Bien entendu ce n’est pas aussi simple que cela. Démarrons donc une série de billets sur les attentes au sein du moteur de bases de données de SQL Server, en détaillant un peu le mode d’exécution des requêtes.

Lire la suite

Résumé du SQL Saturday #501 à Paris par la célèbre Sarah Bessard

Je me suis rendu hier au SQL Saturdays organisés à Paris par le GUSS, un bel événement, beaucoup de monde, et une vue imprenable sur Paris.

J’ai eu l’honneur et l’avantage de faire la rencontre de la très célèbre Sarah Bessard, dont j’entendais régulièrement parler depuis mon rapatriement en France, sans pour autant l’avoir encore vue de mes yeux. Elle a résumé avec un humour qui n’a d’égal que son talent pour l’animation par une mise en scène d’un excellente session sur le Query Store en compagnie de Philippe Geiger, et d’une autre sur le processus de migration d’une version à l’autre de SQL Server, avec Arian Papillon, en sombrero et collier de fleurs … Preuve, s’il en fallait encore, de la nécessité de femmes dans ce mondes de barbus !

Je vous laisse donc vous délecter de ce résumé, car je n’aurais pas pu l’écrire mieux qu’elle. Croyez-le ou non, il colle très bien à la réalité !

@++ ;)

Mesurer et remédier à la fragmentation des index fulltext

La fragmentation et la défragmentation des index relationnels est un sujet connu sur lequel la littérature ne manque pas. Mais on voit bien moins souvent des lignes sur les index fulltext, donc la fragmentation élevée nuit de la même façon aux performances des requêtes que leurs cousins relationnels.

Voici donc une requête qui permet de mesurer la fragmentation des index fulltext, et qui génère l’instruction de maintenance adéquate, le cas échéant :

Lire la suite

Scripter les index fulltext

Voici une petite requête qui permet d’extraire le script de création des index fulltext d’une base de données. Il génère également l’instruction de création du catalogue (CREATE FULLTEXT CATALOG) auquel chaque index est lié. Donc si l’on a plusieurs index attachés au même catalogue, le script teste si le catalogue existe déjà.

Lire la suite

Capture manuelle de plans de requête

Plusieurs des participants au forum SQL Server de Développez demandent comment optimiser une requête : ce billet leur est particulièrement destiné, puisqu’une optimisation de requête ne peut réellement se faire sans son plan d’exécution, le mieux étant aussi d’avoir la sortie de l’option de session SET STATISTICS IO, TIME ON, et le DDL (ordre CREATE TABLE) de la table et de ses index.
Lire la suite

Où trouver la définition des objets et attributs de plans de requêtes ?

Après quelques mois d’absence et avoir assisté au Microsoft MVP Summit et au PASS Summit 2014, et m’être enfin replongé dans un peu de lecture dense sur SQL Server, voici quelques liens utiles en ce qui concerne les plans de requête :

  • Définition des plans XML : schémas XSD : expose le schéma XSD des plans de requête XML, ce qui permet de trouver les améliorations au niveau de l’optimiseur en comparant le schéma de deux versions de SQL Server
  • Guide de référence des opérateurs Showplan : une liste exhaustive de tous les opérateurs que l’on peut trouver dans un plan de requête graphique
  • Une autre liste, publiée par Fabiano Amorim, avec la liste des opérateurs de plan d’exécution graphique les plus communs, expliquant leur fonctionnement, et pourquoi ils sont choisis par l’optimiseur de requêtes

Bonne lecture !