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

SSMSInfoReports, version à publier sur SSRS

Un ingénieur Microsoft (Senior Premier Field Engineer) de Pensylvanie m'a contacté car il utilise mes rapports SSMS "custom" depuis quelques années auprès ses clients.

En plus de les utiliser seulement depuis SSMS, il avait besoin de les publier sur un serveur Reporting Services.

Il m'a fourni une version où il a modifié les sources de données et les passages de paramètres entre rapports : à toutes fins utiles, si vous avez besoin vous aussi de les publier sur un portail SSRS, les fichiers RDL sont disponibles ici.

Bien sûr, les dernières versions pour SSMS sont toujours disponibles sur github.

lundi 30 mars 2020

Big data cluster : quelques tests

Une troisième vidéo sur les clusters big data SQL Server 2019.

J'ai voulu cette fois-ci faire quelques tests : performances de chargement et d'interrogation de données.

Les données sont :

  • Soit stockées dans le storage hdfs du cluster et interrogées directement via Polybase
  • Soit chargées dans le sql data pool distribué, et interrogées aussi via table externe
  • Soit dans une table SQL Server classique.

Je n'ai peut-être pas les volumes nécessaires pour faire du "vrai" big data, mais les performances à l'interrogation de données sont de loin meilleures lorsque c'est une table SQL Server classique (pas de surcharge liée à Polybase...). On pouvait s'y attendre un peu, mais en tout cas, c'est instructif et cela permet de faire quelques constats...

jeudi 26 mars 2020

SSMS : copier sa liste de serveurs inscrits sur un autre ordinateur

Dans SQL Server Management Studio, la liste des serveurs inscrits est une fonctionnalité bien pratique. Ma propre liste comprend 260 serveurs : les miens et ceux de certains de mes clients. Maintenant que le travail à distance est une réalité quotidienne, j'ai besoin de transférer tout cela de mon ordinateur portable à mon ordinateur de bureau.

Il existe bien une fonction d'exportation et d'importation dans SSMS, le seul inconvénient est qu'il n'est pas possible de transférer les mots de passe (ceux pour les connexions SQL) : ils sont chiffrés avec la clé de l'utilisateur. En changeant d'ordinateur, l'importation d'un fichier embarquant les mots de passe chiffrés se passe mal (et d'importer un tel fichier peut même faire planter SSMS !).

Je n'ai pas vraiment envie de resaisir 200 mots de passe, et heureusement il existe une solution !

Lire la suite...

lundi 23 mars 2020

Geographie française en données spatiales

Par ces longues soirées (de confinement), c'est le moment de réviser sa géographie avec des requêtes SQL... Cette base de données recense les 36000 communes françaises, les départements et les régions. Je l'ai mise à jour à partir des données (publiques) de la poste et j'y ai ajouté les départements et les régions.

Petit jeu géographique :

  • Combien de communes s'appellent Pommiers en France, et combien y en a-t'il en Normandie ?
  • Quelle est la distance à vol d'oiseau entre Caen et Lisieux ?
  • Combien de départements (et combien de communes) comprend la région Normandie ?
  • Quelles est la région dessinée ici ?

 

Lire la suite...

vendredi 13 mars 2020

Restaurer sans le filestream

Une question qui m'a été posée : comment restaurer une base sans son filestream ?

Pour rappel, SQL Server sous Linux n'implémente pas le filestream ni le filetable. Que faire lorsque je dois y restaurer une base qui possède du stockage filestream ?

Lire la suite...

- page 1 de 15