Résoudre les problèmes les plus communs de connexion à SQL Server

Qui n’a jamais eu le message d’erreur suivant ?

  • A network-related or instance-specific error occurred while establishing a connection to SQL Server
  • Login failed for user DOMAIN\user

Microsoft vient de publier un guide de résolution de ces erreurs, qui indique les sources du problème et les étapes de résolution.

Bonne connexion(s) !

Retrouver les séquences attachées à des contraintes de valeur par défaut

SQL Server 2012 a introduit les objets SEQUENCE.
Ils permettent, en outre, de spécifier des contraintes de valeur par défaut. Ils vont aussi remplacer la propriété d’auto-incrémentation typiquement utilisée pour les colonnes supportant des contraintes de clé primaire subrogée.

Dès lors, comment retrouver les séquences référencées par de telles contraintes ? Voici un exemple et une petite requête pour nous y aider …
Lire la suite

SQL Sentry Plan Explorer Pro maintenant entièrement gratuit

On ne présente plus l’incontournable outil SQL Sentry Plan Explorer, que j’avais introduit ici et détaillé .

SQL Sentry a annoncé hier que le fabuleux outil qui facilite grandement la lecture de plans de requête, SQL Sentry Plan Explorer, est maintenant gratuit dans son édition Pro.
Jusqu’ici, l’édition Express était déjà un bel outil, qui est maintenant complété par :

  • L’ouverture de plusieurs documents de plan de requête (fichiers .sqlplan, .queryanalysis, .pesession)
  • L’historique et ses commentaires au fur et à mesure du processus d’optimisation
  • L’ouverture des graphes décrivant un deadlock (fichiers de type .xdl)
  • La comparaison de l’impact des index pour une même requête
  • L’aide à l’analyse de la distribution des valeurs dans un objet de statistique

Bonne analyse de plans !

sys.dm_exec_query_profiles : la DMV qui détaille les noeuds d’un plan d’exécution réel

La lecture du plan d’exécution réel peut s’avérer être une tâche laborieuse, surtout lorsque le plan contient de nombreux opérateurs ou nœuds.

Introduite avec SQL Server 2014, la vue de gestion dynamique sys.dm_exec_query_profiles nous permet de voir quel(s) nœud(s) d’un plan d’exécution réel consomme le plus de ressources et /ou de temps. C’est donc un formidable outil qui peut faire largement diminuer la recherche des points noueux d’une requête à l’étude.

Lire la suite

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

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

La transformation Pivot avec SQL Server Data Tools (ex SSIS) : attention à l’ordre !

SQL Server Data Tools (SSDT) est le nouveau nom de SQL Server Integration Services (SSIS).
Je ne suis pas un supporter des opérateurs T-SQL PIVOT et UNPIVOT, pour la simple et bonne raison qu’il ne sont pas ensemblistes, et servent seulement à la présentation de données. Néanmoins, on conçoit aisément que ce sont des opérateurs utiles pour du chargement de données, surtout dans un environnement d’entrepôt de données. J’ai donc décidé de savoir ce qu’il faut faire sous SSDT pour « pivoter » un jeu de données.
Lire la suite

Trouver et corriger les index uniques (non filtrés) sans contrainte

Exception faite des index unique filtrées, il n’y aucune différence en termes de performances entre l’ajout d’un index unique, et l’ajout d’une contrainte d’unicité (qui est elle-même supportée par un index unique).
La contrainte d’unicité permet de signifier que l’intégrité des données est le but, alors que le but premier d’un index est l’accélération des requêtes.
La majorité des index unique étant ajoutés pour renforcer l’intégrité des données, voici donc un script pour trouver tous les index unique non filtrés qui n’ont pas de contrainte d’unicité.

Lire la suite

Etude de table : retourner les caractéristiques des statistiques et index d’une table (ou vue indexée)

Voici un script qui retourne :

– l’en-tête des statistiques d’une table
– la liste des colonnes qui participent à la statistique, ou des colonnes clé de l’index (incluses et filtrées)
– le vecteur de la statistique, qui permet de connaître sa sélectivité
– optionnellement, le niveau de fragmentation des index
– le nombre d’utilisation des index
– la date de dernière mise à jour de chaque statistique scrutée par le script

Lire la suite