dimanche 5 janvier 2020

SOS Verrous bloquants

Le mode d'isolation par défaut de SQL Server s'appuie sur du verrouillage pour supporter des accès concurrents aux mêmes données : si des transactions de modification ne se terminent pas, d'autres transactions qui veulent accéder aux mêmes ressources restent en attente.

On rencontre donc de temps en temps sur le terrain des applications sujettes à des verrous bloquants. Le problème est classiquement d'ordre applicatif : des transactions trop longues (voire même parfois qui ne sont jamais fermées). Et bien souvent, c'est le serveur SQL qu'on accuse, plutôt que de se pencher sur le fonctionnement de l'application.

Quelles sont les méthodes (les bonnes et les moins bonnes) pour en sortir ?

Lire la suite...

vendredi 27 décembre 2019

TSQL : Gérer des listes avec séparateurs

Il arrive parfois que l'on doive gérer gérer des listes avec séparateurs, soit pour les "tabulariser" (transformer la liste en colonne de valeurs), soit pour les produire à partir des valeurs d'une colonne,.

Par exemple, transformer "pain, vin, boursin" en :

colonne1
pain
vin
boursin

... ou l'inverse...!

Nous voyons ici les syntaxes disponibles, et aussi les nouvelles fonctions qu'apportent à ce sujet SQL Server 2016 et 2017 : STRING_SPLIT et STRING_AGG

Lire la suite...

lundi 16 décembre 2019

Surveiller les opérations longues

Lorsque nous créons un index sur une table volumineuse, l'opération risque d'être longue et par défaut nous n'avons aucune information sur son avancement avant qu'elle ne se termine.

Même chose pour une opération de shrink de fichiers (DBCC SHRINKFILE), une sauvegarde ou une restauration

Mais il existe des solutions...

Lire la suite...

mardi 26 novembre 2019

SQL Server 2019 et licences avec Always On

Bon à savoir : avec SQL Server 2019, Microsoft a fait quelques améliorations de l'accord de licences en ce qui concerne les réplicas Always On en édition Enterprise.

Lire la suite...

mardi 5 novembre 2019

SQL Server 2019 ou 2016 ?

Ayant téléchargé l'édition développeur en français dès sa disponibilité, je constate que le label de l'image ISO affiche SQL 2016 et non 2019.
Rassurez-vous, c'est bien SQL Server 2019. Juste un détail inoffensif qui n'a pas été vérifié avant la mise en ligne, espérons qu'il n'y en n'a pas d'autres plus graves...

Par ailleurs, vous avez peut-être comme moi plusieurs versions installées : sur mon portable, il y a 2012, 2014, 2016, 2017 et maintenant 2019. Si l'installation de SQL Server 2019 échoue avec l'erreur "Une erreur liée à une dépendance du composant s'est produite, entraînant l'échec du processus d'installation du composant.", vérifiez si le problème provient de l'installation du client natif (SQL_SNAC_SDK_sqlncli_Cpu64). Si c'est cette cause, désinstallez le client natif SQL Server 2012 avant l'installation de SQL Server 2019.

Un dernier point, pour l'avoir testé aujourd'hui, l'outil Readtrace (RML Utilities) lit sans problème une trace profiler de SQL Server 2019, à condition d'avoir bien mis à jour sa version comme c'est indiqué ici.

lundi 4 novembre 2019

SQL Server 2019 est disponible

Il était juste temps, nous sommes encore en 2019 pour un peu moins de 2 mois : Microsoft annonce aujourd'hui la disponibilité générale de SQL Server 2019.

Vous pouvez télécharger une version d'évaluation ou développeur à cette adresse, langue au choix.

Nous avions déjà évoqué les nouveautés de cette version : clusters big data avec kubernetes, nouveautés du moteur, ... A suivre sur ce blog et sur la chaine youtube datafly

Le téléchargement se termine et l'installation de la RTM va démarrer, pour l'utiliser dès demain.

lundi 23 septembre 2019

SQL Server 2019 : performance des UDF scalaires

La sortie de SQL Server 2019, actuellement en release candidate, se rapproche.
Ce petit webcast avec présentation et démo va plaire aux développeurs qui usent et abusent d'UDF scalaires : une nouvelle optimisation de cette future version pour l'incorporation des fonctions UDF scalaires dans le plan d'exécution (ou en anglais UDF scalar inlining).

mercredi 18 septembre 2019

Readtrace et SQL Server 2019

Je reste un aficionado de l'outil ReadTrace pour l'analyse de performance des requêtes à partir d'une capture de trace du Profiler.

ReadTrace fait partie des ("vieux") outils RML, dispensés gratuitement (mais sans support) par le support Microsoft. Mais bien entendu, les mises à jour de cet outil sont peu fréquentes et la dernière version ne prend pas en charge au-delà de SQL Server 2014 : quid de 2016, 2017 ou 2019 ? Heureusement il y a une astuce (en fin d'article)...

Nous allons voir ici l'intérêt de cet outil pour nous aider à analyser les performances des requêtes.

Lire la suite...

jeudi 5 septembre 2019

Comment répartir son stockage en FileGroups ?

Pour la grande majorité, les bases de données que j’audite ont un stockage configuré comme par défaut : avec un seul fichier de données (+ un fichier de journal de transactions).

Et je ne parle même pas des bonnes pratiques qui consistent :

  • à pré-dimensionner le fichier pour les évolutions futures,
  • à choisir des incréments de croissance suffisamment gros (mais pas trop),
  • à stocker le journal de transaction sur un disque différent du disque de données…

Au-delà de l’application de ces bonnes pratiques, lorsque la volumétrie de votre base de données aura fortement augmenté, vous serez donc très certainement amené à reconsidérer le stockage.
Nous allons examiner comment s'y prendre...

Dans cette mise à jour, en fin d'article, le lien vers la procédure stockée qui vous permettra de déplacer vos tables, même avec des colonnes LOB !

Lire la suite...

mardi 3 septembre 2019

Sur quel port TCP écoute mon instance SQL ?

Pour configurer le firewall et ouvrir les ports nécessaires, j'ai besoin de connaître sur quel port TCP mon instance est à l'écoute. Tout va bien si j'ai le gestionnaire de configuration SQL Server à ma disposition, mais comment faire si je n'ai accès qu'à une fenêtre de requête ?

Lire la suite...

- page 3 de 15 -