jeudi 18 mars 2021

Ménage de printemps

Il y a quelques tâches ménagères d'administration qui sont trop souvent oubliées : le nettoyage des journaux et des historiques !
Si ce n'est pas fait, on finira par se retrouver avec :

  • Une base de données msdb géante
  • Des problèmes de temps de réponse dès qu'il faut supprimer une base de données (avec son historique de backup géant...)
  • De mauvaises performances pour interroger l'historique des travaux ou des sauvegardes
  • Des milliers de fichiers dans le répertoire "log" de SQL Server
  • ...

Voici quelques requêtes, nous en profitons pour explorer quelques nouvelles DMV et procédures stockées étendues...

Lire la suite...

mardi 16 février 2021

SSMS InfoReports v7

La nouvelle version (v7) de mes custom reports pour SQL Server Management Studio est disponible sur Github : https://github.com/datafly/SSMSInfoReports

Elle intègre maintenant 13 rapports, dont les derniers en date qui étaient présentés ici : Always On AG et Jobs Planning History.

Tous les rapports ont fait l'objet de diverses améliorations.

Bon téléchargement !

jeudi 10 décembre 2020

Nouvelle vidéo : Data Masking avec SQL Server

Si vous utilisez SQL Server et vous vous sentez concerné par la protection des données personnelles (RGPD), regardez cette vidéo.
Vous verrez ici que la fonctionnalité de Dynamic Data Masking qui existe dans SQL Server, bien que facile à mettre en oeuvre, est facilement contournable par un utilisateur.
Et pour compléter, il y a aussi une petite démo de Static Data Masking avec l'outil Red-Gate Data Masker. Là c'est du sûr, mais c'est du lourd...

jeudi 10 septembre 2020

La vidéo du Power Saturday 2020

La video de ma présentation au Power Saturday 2020 est maintenant disponible : SQL Server 2019, de l'intelligence sous le capot. Le Power Saturday s'est tenu le 6 juin dernier, entièrement en virtuel cette année (Covid oblige).

Lors de cette session assez avancée, co-présentée par mon collègue Frédéric Brouard et moi-même, nous avons voulu montrer les améliorations de l'optimiseur de SQL Server dans ses versions 2017 et 2019. Et on y voit qu'il y gagne de l'intelligence, de quoi vous donner à réfléchir pour upgrader vers les dernières versions si ce n'est pas déjà fait. Les fonctionnalités suivantes sont expliquées et démontrées :

  • encapsulation des fonctions scalaires
  • feedback d'allocation mémoire
  • mode batch en row store
  • compilation différée des variables tables
  • jointures adaptatives
  • paramétrage automatique

La vidéo dure une heure, prévoyez une bière et des cacahuètes...

Le lien vers la présentation en pdf

Le lien vers les scripts (les bases de données utilisées sont trop volumineuses pour être disponibles en ligne)

samedi 25 juillet 2020

SSMS Custom Report : job history planning

Un nouvel ajout à ma collection de custom reports pour SSMS : l'historique des jobs de l'agent SQL sous forme de planning sur 24 heures, disponible ici (nouvelle version du 15/01/2021).

Il est bien utile d'avoir un outil visuel pour identifier rapidement quels sont les jobs particulièrement fréquents ou particulièrement longs, ou encore de savoir quels sont les jobs planifiés aux mêmes horaires. SSMS ne nous offre nativement rien de tel...

Pour utiliser le rapport dans SSMS, faire un clic droit sur l'instance SQL dans l'explorateur d'objets, menu contextuel "Rapports", puis "Rapports personnalisés", ici ouvrir le fichier .RDL.

Le rapport interroge la table msdb..sysjobhistory : n'oubliez pas que cette table doit être purgée régulièrement sinon elle risque d'enfler indéfiniment (et les performances du rapport s'en ressentir). La procédure stockée sp_purge_jobhistory permet d'effectuer cette opération, généralement une rétention de 30 jours est suffisante dans la plupart des cas.

Le rapport est plutôt compact, le but était d'avoir une vision globale sur 24 heures. Les jobs réussis s'affichent en vert, ceux en échec en rouge. En passant la souris sur la plage d'exécution d'un job, un tooltip s'affiche avec quelques informations. Il y a aussi un lien sur le nom de chaque job qui permet d'atteindre un rapport détaillé, cela si vous avez installé les autres custom reports que je propose.

Pour rappel, ces autres rapports sont disponibles au téléchargement sur github, et il y a en plus le rapport sur les groupes de disponibilité Always On, accessible ici.

J'ai l'intention de repackager tout cela dans une future version 7.0 : y intégrer les nouveaux rapports ainsi que les dernières corrections que j'ai faites sur les anciens.

Bonne exploration des custom reports...!

jeudi 16 juillet 2020

Isolation snapshot et version tag

Une question que posent souvent les développeurs : comment éviter les verrous bloquants à la lecture des données ?

Une des (mauvaises) solutions est d'utiliser la directive NOLOCK (ou isolation READ UNCOMMITTED) : c'est un faux ami car cela ne garantit pas la cohérence transactionnelle des données que l'on lit.

L'autre solution est d'utiliser un niveau d'isolation "optimiste", par versionning : SNAPSHOT ou READ COMMITTED SNAPSHOT (RCSI).

Le principe de l'isolation par versionning est le suivant : plutôt que de poser un verrou partagé pour lire les données (ce qui empêchera de lire des données en cours de modification), SQL Server va renvoyer la dernière version validée des données : il utilise pour cela le "Version Store", qui stocke de manière transparente cette version des données dans Tempdb.

Un effet de bord mal connu de l'isolation SNAPSHOT (ou RCSI) est qu'il ajoute un pointeur de 14 octets à chaque ligne de données dès qu'on la modifie, ce qui peut poser certains problèmes. Voyons cela de plus près.

Lire la suite...

lundi 29 juin 2020

Eliminer ou chercher les accents

Une question qui m'a été posée : comment savoir si la colonne d'une table contient des caractères accentués ou des minuscules et comment y éliminer les accents ? Cela avec SQL comme avec SSIS : voyons quelques astuces...

Lire la suite...

mardi 12 mai 2020

Le 6 juin 2020 : Power Saturday

Le Power Saturday / SQL Saturday 2020 à Paris se tiendra le 6 juin 2020. Ce sera une manifestation en ligne, covid-19 oblige.

J'aurai le plaisir de vous présenter cette année une session avancée, orientée optimisation des performances :

SQL Server 2019, de l'intelligence sous le capot

SQL Server 2019 et le traitement intelligent des requêtes : dans cette session, nous verrons comment les versions récentes de SQL Server améliorent les performances des requêtes en embarquant plus d'intelligence. Nous observerons en profondeur quelques unes des fonctionnalités intelligentes de SQL Server 2019 (pour certaines apparues déjà avec SQL Server 2017) : encapsulation des fonctions scalaires, feedback d'allocation mémoire, mode batch en row store, compilation différée des variables tables, jointures adaptatives, ...

Inscrivez vous sur : http://powersaturday.com

lundi 20 avril 2020

Un peu d'histoire

"Nous sommes dans l'ère de l'information.
Avoir l'information sous la main, au moment où il faut, voilà la clef de la réussite.
Tous les jours, au bureau, à l'usine, à la maison, vous ressentez ce besoin."

Non, ce n'est pas la pub pour le dernier smartphone et ça ne date pas d'aujourd'hui : c'était la présentation du premier ordinateur personnel d'IBM, l'IBM PC de 1981.

En rangeant mes vieux papiers, je suis tombé sur ce collector : le dossier publicitaire d'époque sur papier glacé, complet, dans sa pochette cartonnée.
Cela mérite quelques extraits...

Lire la suite...

dimanche 12 avril 2020

Nouveau SSMS custom report : Always On

Dans ma palette de rapports custom pour SQL Server Management Studio, il manquait un rapport sur les groupes de disponibilité Always On. Assez utile, dans la mesure ou SSMS ne propose rien d'autre que le "tableau de bord", qui n'est pas franchement synthétique ni ergonomique.

C'est chose faite avec ce nouveau rapport, téléchargeable ici.

Voila un aperçu :

Les autres rapports sont toujours téléchargeables sur https://github.com/datafly/SSMSInfoReports

- page 1 de 16