Télécharger SQL Server Management Studio 2017 (v17.2)

Voici la dernière version de SQL Server Management Studio :

https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms

Je donne le lie car il arrive qu’on obtienne la version 17.0 RC par exemple, alors que la version la plus actuelle est la 17.2. Cela évite d’avoir à télécharger 350 Mo en plus de 680 de la 17.0 :D

Variables de type table, statistiques et drapeau de trace 2453

M’étant arrêté d’écrire pendant un certain temps, mais certainement pas de lire, me voilà de retour au clavier pour partager sur mon sujet préféré : l’optimiseur de requêtes, et plus particulièrement l’estimation de cardinalités. En butinant des billets de blog ici et là à propos de SQL Server, je trouvais un billet détaillant le comportement des requêtes spécifiant des variables de type TABLE.

Qu’est-ce que l’estimation de cardinalités ? Pour faire très court, c’est l’ensemble des règles mathématiques qui permettent à SQL Server d’avoir une idée assez précise du nombre de lignes qu’il aura à traiter lors de l’exécution d’une requête. C’est avec ce calcul-là qu’il sélectionne les algorithmes de jointure, de regroupement, l’ordre et la façon d’accéder aux tables, et bien d’autres choses encore. Bien sûr, ces choix varient suivant le volume de données à traiter. On le comprend donc, c’est un sujet très important, puisqu’il impacte directement les performances de l’exécution de nos chères (parfois en IO et temps CPU !) requêtes.

Alors vous allez me dire, crevant d’impatience : « bon d’accord, mais il le sort de son chapeau magique ce calcul ? » : au risque de vous décevoir, non. Dès lors qu’on soumet une requête qui filtre une table par une colonne, ou l’utilise dans une jointure, un regroupement, alors par défaut, le moteur crée automatiquement des objets de statistique. C’est à dire qu’il va échantillonner les données des colonnes des tables participant à la requête pour évaluer la distribution des données dans les colonnes (et index) de ces tables. Fort de ces informations, il peut alors réaliser le fameux calcul. Bref, ce sont des mathématiques :)

L’auteur du billet en question partageait sur le fait que par défaut, SQL Server estime qu’il n’y a qu’une seule ligne dans une variable de type TABLE. Ceci s’explique par le fait que SQL Server ne maintient pas d’objet de statistique sur les variables de type TABLE (pour les curieux, il le fait néanmoins sur les tables temporaires). Quand on sait l’usage qui est fait des variables de type TABLE dans les applications, il est évident qu’il arrive rarement que ces tables ne soient en charge que d’une seule ligne; de là des performances qui ne sont pas toujours en adéquation avec le volume de données à traiter.

Voyons le comportement par défaut du moteur à l’aide de la base de données AdventureWorks2012 :
Lire la suite

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) !

Redémarrer la trace par défaut

SQL Server fournit de nombreux outils de monitoring d’arrière-plan par défaut, comme le journal SQL Server, la session d’événements étendus system_health, mais aussi une trace SQL Profiler. Cette dernière est enregistrée dans un fichier dans le répertoire des journaux, et SQL Server conserve 6 fichiers de cette trace.

Elle capture, entre autres, les événements d’échec d’authentification, la création d’objets dans TempDB, les warnings sur Hash et Sort, les grossissements de fichiers, et de nombreux autres événements. Ceux-ci peuvent aider à comprendre, a posteriori, ce qui a causé une grande consommation de CPU, des latences disque, …

Comme cette trace est écrite sur disque, il peut malencontreusement arriver que ce dernier devienne plein, provoquant alors l’arrêt automatique et forcé de la trace. Ce léger incident (l’arrêt de la trace, pas l’absence d’espace disque libre !) n’empêche aucunement l’instance de fonctionner, ou au moins d’être accessible. Cependant, comment peut-on redémarrer cette trace sans redémarrer l’instance SQL Server ?

Lire la suite

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

Installer SQL Server Management Studio 2016

SSMS 2016 n’est maintenant plus inclus dans le package d’installation de SQL Server.
Ceci permet à Microsoft d’effectuer des corrections sur ce logiciel à un rythme plus rapide que jusqu’à SQL Server 2014.
Ceci se confirme lorsqu’on regarde la liste des corrections : un bon lot de tickets Connect sont adressés.

Pour installer SQL Server Management Studio 2016 v16.5, c’est par ici.
Pour obtenir l’installation dans une autre langue, voyez la section Langues disponibles.

ElSüket

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 !

SQL Server Management Studio 2016 v16.3 vient de sortir !

Avec la sortie de SQL Server 2016, Microsoft avait annoncé découpler l’installation de SQL Server Management Studio (SSMS) de celle de SQL Server. Ceci sert deux buts :

  • On n’est plus tenté d’installer SSMS en même temps que SQL Server sur une machine : ceci fait donc moins d’ouvertures aux potentielles failles de sécurité et élimine de possibles instabilités de la machine. Cela oblige les acteurs de l’entreprise à se connecter une l’instance SQL Server directement depuis leur station de travail, ou mieux depuis une machine « de rebond » qui peut être monitorée très strictement en ce qui concerne la sécurité d’accès et l’audit des actions de l’utilisateur (par exemple enregistrement vidéo de la session bureau à distance)
  • Lire la suite

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