Azure SQL Edge – Déploiement sur Raspberry Pi3

Il y a quelques semaines j’ai au le plaisir d’animer un Webinar (de 4 heures  …) sur la modernisation de votre plateforme SQL Server. Tout le début de session était consacré à l’archéologie informatique et le retour sur les « vieilles » versions SQL Server. La genèse, les années 2000 et les versions actuelles, avec les nouvelles fonctionnalités apparues au fur et à mesure de l’évolution du produit.

Ensuite, il était fait la part belle au choix de la plateforme : Windows, Linux, Docker, Kubernetes … et bien sur toutes els possibilités offertes par Azure, autant en IaaS que PaaS.

Oui SQL Server est … partout. Ou presque ! On était sur plateforme x86, x64 et ia64 il y a presque 20 ans déjà. Mais pas de ARM ! Non, effectivement, il n’est pas possible à l’heure actuelle d’installer SQL Server pour linux sur un Raspberry (j’ai essayé … on n’est pas très loin, mais non).

Je devrais plutôt dire qu’il n’était pas possible d’installer SQL Server sur plateforme ARM. Car la sortie de l’édition Edge, encore en preview au moment où ce billet est écrit, de SQL Server va changer la donne.

Azure SQL Edge, what ?

Azure SQL Edge est une édition de SQL Server, à l’emprunte système extrêmement faible, pouvant s’exécuter sur plateforme ARM et Intel sur du matériel de type Raspberry ou équivalent (pas d’Arduino) en tant que conteneur. Elle offre des fonctionnalités son présentes dans les autres éditions SQL Server telles que le stockage et le traitement de données de type Time Series comme InfluxDB. Imaginez tout simplement les capteurs d’une chaine de production stockant toutes leurs mesures sur Azure SQL Edge. Vous pouvez requêter cette base de données en T-SQL ou bien produire des rapports de type PowerBI par exemple. Mais plus encore, SQL Edge vous permettra d’uploader vos données vers un Data Center Azure afin, par exemple, d’utiliser les services de Machine Learning et l’IA pour faire de la détection prévisionnelle de panne ou bien surveiller les métriques et être alertés en cas de déviance ou d’anomalies sur les données collectées.

Mais cela reste avant tout un « vrai » SQL Server avec tout ce que vous connaissez déjà : performance, sécurité, simplicité d’utilisation …

Ce billet se concentre sur le déploiement, on ne peut pas vraiment parer l’installation, de Azure SQL Edge. D’autres billets vont suivre pour les cas d’usage …

Installation de l’OS sur le Raspberry Pi

Mon bureau ressemble un peu à une caverne d’Alibaba, peuplé de construction en Lego, de drones, modèles réduits de voitures mythiques, vieux (et moins vieux) appareils photos, de voitures pilotées via Arduino (Uno et R3), de Raspberry Pi (2, 3 et 4) et d’autres gadgets aussi inutiles qu’indispensables. Facile donc de piocher dans cette réserve un bon vieux Raspberry Pi 3 B+ pourvu de 4 cores 1.4 Ghz et 1 GB de RAM. Je ne vous cache pas que 2GB de mémoire est quand même plus confortable. Le point crucial ici concerne le processeur qui doit nécessairement être en 64bits.

Je ne suis pas là pour vous faire un tutorial d’installation de Ubuntu sur Raspberry, mais sachez que c’est extrêmement simple.

Téléchargez l’image de Ubuntu 18.04 en 64Bits, ce point est crucial, le processeur et l’OS doivent être en 64Bits. J’ai testé avec une 20.04 mais tous les packages ne semblent pas disponibles chez Microsoft au moment où ce billet a été écrit. A l’aide de Rufus ou Win32DiskImager, rendez bootable une carte SD de 16GB minimum et … c’est tout !

Bootez le Raspberry PI 3 et connectez-vous (par défaut le user et le password sont ubuntu). Vous devez changer le mot de posse lors de votre première connexion. Attention, vous êtes en qwerty ….

Prenez le temps de renommer votre OS … Juste afin d’être plus propre.

sudo hostnamectl set-hostname UbuntuRPi3

sudo reboot

Cool, notre Raspberry est prêt à l’emploi.

Création de l’IoT Hub sur Azure

Il ne vous aura pas échappé que dans Azure SQL Edge, il y a … Azure ! On va donc créer des ressources au travers du portail.

Afin de pouvoir gérer les ressources de cette démo de manière indépendante, un groupe de ressource spécifique est créé.

Ensuite, il faut créer une ressource de type IoT Hub qui va permettre d’enrôler le Raspberry.

Vous pouvez accepter tous les paramètres par défaut des écrans suivants, du moins pour ce qui concerne cette prise en main.

Quelques minutes plus tard, votre Hub est prêt à l’emploi.

Il faut ensuite enregistrer le device, cliquer sur l’item IoT Edge et cliquer ensuite sur le bouton d’ajout :

Nommez votre device et enregistrez :

J’ai opé pour le même nom que celui donné au niveau HostName sur la configuration du Raspberry, mais je pense que ces valeurs peuvent différer sans pour autant poser de problème. Mais je trouve cela bien plus clair.

Afin d’installer l’IoT Edge runtime sur le Raspberry, nous devons récupérer la chaine de connexion, cliquer sur le nom du device que vous venez de créer :

Par défaut, pour éviter tout problème de sécurité, les chaines sont masquées à l’affichage, d’où la présence de pictogrammes pour visualiser le texte masqué.
Conservez la chaine de connexion, elle va servir plus tard….

Installation du runtime IoT Edge

On peut à présent retourner sur le Raspberry afin d’y installer le package nécessaire à l’exécution du runtime IoT Edge.

Quelques lignes de code afin de récupérer les informations du repository Microsoft et d’ajouter les clés publiques.

curl https://packages.microsoft.com/config/ubuntu/18.04/multiarch/prod.list > ./microsoft-prod.list

sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/

curl https://packages.microsoft.com/keys/microsoft.asc | gpg –dearmor > microsoft.gpg

sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/

sudo apt-get update

Si vous suivez ce Blog, ou bien si vous avez eu l’occasion de me suivre durant une session lors de SQL Saturday, ou bien lors de Webinar, il ne vous aura pas échappé que je fais assez souvent référence aux conteneurs, à Docker, à Kubernetes. En effet, la containerisation semble être la virtualisation 2.0. Et SQL Server s’accommode parfaitement de ce type de plateforme. SQL Server est supporté dans un conteneur depuis la version 2017 et SQL Server 2019 apporte le support de Kubernetes.

Azure SQL Edge va s’exécuter dans un conteneur, mais pour le coup il s’agit du moteur Moby et non pas Docker … Le nom vous est familier ? Possible …. Une VM Moby se cache derrière Docker Desktop.

sudo apt-get install –y moby-engine moby-cli

La proximité avec Docker est flagrante : les lignes de commande sont absolument similaires.

Une fois installé il faut alors installer IoT Edge qui va permettre au Raspberry de se connecter à Azure.

sudo apt-get install -y iotedge

Un message explicite nous invite à modifier le fichier de configuration afin d’y spécifier note chaine de connexion obtenue dans le portail Azure.

On édite le fichier et on localise la section adéquate :

sudo nano /etc/iotedge/config.yaml

Et on redémarre IoTEdge.

sudo systemctl restart iotedge

Attention à votre connexion internet qui doit autoriser l’accès à des ports spécifiques (5671 et 8883) vers Azure. Pour ma part, je filtre les connexions sortantes, et cela m’a occasionné quelques erreurs.

sudo iotedge check

Une fois utilisé un autre routeur sur lequel je filtre beaucoup moins, les problèmes de connexion ont disparus.

IoT Edge étant démarré, deux images sont présentes sur le Runtime Moby et l’IoT Edge Agent est bien démarré

On va pouvoir procéder au déploiement de SQL Server.

Déploiement de Azure SQL Edge

Il est à présent possible de télécharger l’image de SQL Server sur notre Raspberry. L’intérêt des solution IoT Azure est de pouvoir gérer le parc de devices, qui peuvent être très nombreux, depuis la console Azure. Le déploiement de SQL Server va se faire via le portail.

Dans le Marketplace, recherchez « Azure SQL Edge » et cliquer sur Créer.

Si tout s’est correctement déroulé depuis le début, vous devriez pouvoir rechercher votre Raspberry Pi en cliquant sur le bouton adéquat.

SQL Server reste SQL Server, y compris dans un conteneur. Or, lors de la création d’un conteneur à partir d’une image SQL Server, vous devez spécifier le mot de passe pour le compte SA au travers d’une variable d’environnement. En cliquant sur AzureSQLDatabaseEdge, une page de configuration spécifique vous est présentée afin de positionner vos variables d’environnement.

Vous pouvez valider et lancer le déploiement. Il n’y a plus qu’à patienter…. En fonction du débit de votre ligne internet.

Yesssssss, SQL Server semble fonctionner.

Et l’on peut confirmer cela au travers des images installées et des containers en cours d’exécution

Tout semble en ordre. Le port 1433 semble bien être redirigé vers le conteneur … Reste donc à tester via SSMS !

Yeeeaaaahhhh, tout fonctionne parfaitement. Azure SQL Edge est déployé sur un Raspberry Pi 3.

Il n’y a plus qu’à jouer avec cette nouvelle édition de SQL Server ….

Happy SQL Server on ARM !

Publié dans Azure, Containers, Docker, IoT, Linux, SQL Server | Tagué | 2 commentaires

Renouvèlement MVP

Heureux de faire partie un an de plus des MVP Data Platform.

Happy MVP day !

Publié dans CV | Tagué | Laisser un commentaire

Modernisation de votre plateforme SQL Server – Slides et démos

Je voudrais d’abord remercier tous les participants à cette matinée SQL Server qui a été particulièrement bien suivie malgré sa longueur … les plus courageux étaient encore présents après 4 heures de présentation …

Merci à Jean Glaudon, Microsoft Data & AI Sales Specialist, et Stéphane Papaix, Microsoft Cloud Solution Architect pour avoir enduré un retard certain pour leur prise de parole. Oups, désolé, soit il y avait trop de contenu, soit je parle trop ?
Merci enfin à Fabien Balny et Benoit Moussaron-Navarre, j’ai hâte de dépoussiérer les Expériences Labs après ces semaines de fermeture forcée …

Vous pouvez d’ores et déjà récupérer les slides et les démos sur mon OneDrive public ainsi que sur mon GitHub https://github.com/conseilit/Events/tree/master/Webinar%20202006%20-%20Modernisation%20de%20votre%20plateforme%20SQL%20Server

Le replay de l’évènement sera prochainement disponible.

Happy SQL Azure …

Publié dans Azure, SQL Azure, SQL Server | 1 commentaire

Webinar – Modernisation de votre plateforme SQL Server

« Winter is coming » comme disent nos amis anglophones !

Voire l’hiver est déjà là ! En effet, Windows 2008 (R2) et SQL Server 2008 (R2) ne disposent plus de support depuis … Juillet 2019. Presque un an déjà. Et je rencontre toujours ce type de plateforme lors de mes interventions chez mes clients. Il est plus que temps de migrer afin de rafraichir votre plateforme …

Alors, j’entends d’ici des voix s’élever comme quoi une migration c’est compliqué, cela prend du temps, cela coute cher … Je ne peux pas nier que cela demande un peu de travail. Mais il y a aussi de nombreux bénéfices à migrer : profiter de nouvelles fonctionnalités liées à la base de données.

Et se pose inévitablement la question de la plateforme : doit-on virtualiser SQL Server ? Doit-on privilégier une infrastructure OnPremise ou bien basculer la charge de travail sur un cloud Public tel que Microsoft Azure.

Accompagné par des intervenants Microsoft, je vous propose de passer une matinée ensemble afin de parler modernisation de votre plateforme SQL Server.

Windows, Linux, Docker, Kubernetes : quelles sont les solutions proposées pour moderniser votre plateforme SQL Server. De plus, Azure s’installe progressivement comme une extension de votre Datacenter. Comment tirer le meilleur parti du Cloud Microsoft pour SQL Server ?

Après un rappel historique, ce Webinar vous donnera un aperçu des opportunités d’hébergement OnPremise et Microsoft Azure.

Je vous donne donc rendez-vous le Vendredi 26 juin pour cette matinée destinée à la modernisation de la plateforme SQL Server. Aucune excuse pour louper ce Webinar, un vendredi matin il n’y a pas de mise en production !

Cet évènement est totalement gratuit !

Il suffit de vous inscrire à l’adresse suivante : https://www.eventbrite.com/e/matinee-sql-server-modernisation-de-la-plateforme-tickets-106346904454

Un lien pour vous connecter au Teams Live vous sera communiqué ultérieurement.

Happy Webinar !

Publié dans Azure, Non classé, SQL Azure, SQL Server | Laisser un commentaire

PowerSaturday 2020 en ligne – L’agenda

L’édition 2020 du #PowerSaturday se rapproche. Plus que quelques heures pour faire partie des 850+ inscrits à la conférence. Plus de 42 sessions et autant de speakers prêts à donner de leur temps pour vous transmettre leurs connaissances dans la bonne humeur. Oui c’est un Samedi, et si le seul attrait technique ne suffit pas, pensez au tirage au sort qui sera effectué en fin de journée … Que des beaux lots à gagner !

Alors, motivé ? Pour les inscriptions, cela se passe ici

D’un point de vue Agenda, j’aurais le plaisir d’aborder à 10h15 l’évolution de SQL Server au travers de Docker, Kubernetes pour terminer sur SQL Server 2019 Big Data Cluster.

See you on Saturday

Publié dans Conférence, Evènements, Kubernetes, Linux, SQL Server | Tagué , | Laisser un commentaire

COVID-19 – Consulting gratuit SQL Server

La période de confinement due au virus COVID-19 ne signifie pas pour autant que c’est la fin du monde. En général, les grands évènements permettent à une société, au sens civil du terme, de se poser des questions quant à la manière d’être ou de travailler. Même si je n’étais pas né en 1968, il est clair que les évènements d’alors on fait évoluer la société.

Nul doute que les évènements actuels, liés au confinement, à la fermeture de bon nombre de magasins va entrainer un bon nombre de questionnements sur différents sujets, relatifs à la délocalisation de certaines industries liées au domaine médical, à la notion de service public qui doit faire fi des règles économiques dès que touchant au domaine de la santé. De même l’opposition entre commerce « local » et l’économie numérique n’est pas aussi simple que cela à traiter. Il est probable que de fervents opposants au commerce en ligne se réjouissent de pouvoir réaliser leurs courses en ligne …

< Parenthèse publicitaire >

J’en profite au passage pour exhorter les sites de commerce en ligne à réaliser une passe d’optimisation de leurs bases de données et du code de leurs sites Web. Il n’y a rien de plus horripilant que d’attendre parfois quelques dizaines de secondes qu’une page web s’affiche lorsque l’on est en train de passer commande, quand cela aboutit, ou bien passer 5 minutes 40 à regarder un sablier tourner, sans parler des erreurs http 500 … Quelques journées de consulting pour faire un bilan de santé de votre infrastructure ne représentent qu’une fraction de vos coûts et peut grandement améliorer l’expérience utilisateur, et probablement votre chiffre d’affaire. Une occasion en or de tester des offres cloud offrant une élasticité sans comme mesure. Ajouter des ressources lorsque la charge augmente et les diminuer lorsque cela sera plus nécessaire. Note particulière pour l’éducation nationale : oui nos enfants peuvent suivre des cours sur Internet, parfois en vision conférence. Mais le simple fait de récupérer des devoirs sur les sites de collèges est parfois … impossible.

</ Parenthèse publicitaire >

Les changements à venir vont probablement toucher à l’organisation du travail avec le recours au télétravail comme j’ai pu en parler ici. Le présentiel a des avantages, le télétravail également. 100% de n’importe laquelle des solutions n’est pas souhaitables, soyons clair. Nous avons besoin de contact humain. Mai sil ne faut plus exclure cette possibilité comme je le vois dans certaines sociétés. Et puis comme l’a rappelé un ami, ce n’est pas simple en mettre en place car pouvant introduire une fracture de communication entre les présents et distants.

La crise sanitaire fait clairement bouger le lignes, autant au niveau de la société, j’ai l’impression de voir un peu plus d’humanité et de solidarité entre les personnes, mais aussi au niveau du business. On ne peut que louer les annonces faites par des éditeurs qui offrent, certes pour une durée limitée mais rien ne les y obligeait, l’accès gratuit à leurs logiciels pour continuer l’activité. Pour certains, il y avait déjà des options gratuites.

Notons par exemple (il est certain que j’en oublie, passer moi le message et je complèterai la liste) :

L’organisation du travail est modifiée, mais il est possible de transformer cela en opportunité. Opportunité pour se former. Imaginez des centaines d’heures de formations totalement gratuites fournies par la communauté SQL Server. Cela se trouve sur le site du PASS : https://www.pass.org/Learn/Recordings/Listing.aspx

Profitez également de cette période pour vous certifier sur les produits. Il est possible de passer les certifications MCP à domicile, en respectant certaines consignes.

Pour ma part, j’ouvre un Teams pour des heures de consulting totalement gratuit.

Vous pouvez poser vos questions, me présenter vos problèmes vos blocages ou simplement venir discuter, par chat ou même audio-vidéo. Pour cette semaine, les créneaux 10h-12h sont ouverts. Pour la suite, j’adapterai les horaires en fonction de ma charge de travail. Il est probable que je donne également des formations en ligne totalement gratuites.

Contreparties :

  • Me fournir votre adresse email pour vous ajouter à l’équipe !
  • M’autoriser à présenter le problème lors de mes conférences, toutes données anonymisées bien entendu.

Je ne peux pas vous garantir un résultat systématique, certains problèmes peuvent prendre plus de temps pour être résolus. Mais il y aura des pistes.

Voici le lien pour le Teams :

https://teams.microsoft.com/l/team/19%3a447e43b5f216411f88a4b5352d4406da%40thread.tacv2/conversations?groupId=91ba2077-515a-4f28-8a31-49f995134d23&tenantId=218e2fe8-d131-42e3-8928-7b8c5de1514b

Happy COVID-19 Work From Home !

Publié dans Non classé | Laisser un commentaire

Télétravail – une occasion de changer les préjugés

La « crise » sanitaire que traverse actuellement la France, et bien d’autres pays, doit être un déclencheur. Un déclencheur pour changer les mentalités. Et j’avoue que nous Français, relativement enclins à ignorer les règles, somme en train de nous responsabiliser socialement en adoptant les bons gestes en matière de distanciation sociale.

Rapporté à ma petite personne, à ma petite entreprise de consulting, cela pourrait avoir des conséquences plutôt … désagréables. Une grande majorité d’entre nous ne dispose pas d’indemnité journalières, ou bien, ce service extrêmement onéreux s’accompagne d’un nombre relativement important de jours de carence. Pour simplifier, pas de travail, pas de revenu.

Mais hors de question de se plaindre. Ce statut est un choix, un choix de mode de vie et de travail.

10 ans, cela fait 10 ans que j’ai créé ma société et c’est quelque chose que je n’ai jamais regretté. Il ne faut pas non plus se voiler la face, ce n’est pas simple tous les jours. Et à ceux qui me disent souvent « tu fais ce que tu veux, tu n’as pas de parton », je rétorque que j’ai autant de patron que de clients !

Depuis que j’ai commencé mon activité de consultant indépendant, j’ai très souvent proposé 2 devis à mes clients : une version en mode présentiel et une version en mode « télétravail ». Et pour être transparent, j’applique même un TJ inférieur en prise de main à distance car je considère que c’est un « avantage » pour moi que de travailler depuis mon bureau.

Mais faire du télétravail ne signifie pas pour autant « glander ». Et c’est peut-être là que les mentalités doivent changer. Travailler depuis son domicile ne signifie pas travailler moins, passer son temps dans la piscine (OK, elle est encore à 10 ou 12°) ou dans son jardin. La technologie actuelle, accès à internet « relativement » rapide et stable, les logiciels tels que Teams et équivalents, une webcam, un micro, un casque permettent de travailler de manière quasi identique que l’on soit au bureau ou bien chez soi.

Doit-on contrôler la personne qui travaille ? Difficile de répondre à cette question. J’ai un avis personnel, certes, qui est de ne pas faire de contrôle, mais je ne suis pas certain que ce soit une réponse universelle. J’applique la même rigueur de travail en présentiel et à distance, mais je sais aussi que certaines personnes en sont incapables. En revanche, chacun ayant un certain nombre de tâches à effectuer, généralement associées à un planning prévisionnel, si les délais ne sont pas tenus, cela fait office de contrôle de fait. Et puis, a-t-on vraiment besoin de contrôler quelqu’un avec qui on a passé 6 heures en conférence audio-vidéo dans la journée ? Monter une réunion à 5, 10 ou 20 personnes dans Teams est un jeu d’enfant. On peut tout à fait travailler à distance en ayant plus d’interactions qu’en présentiel.

Je ne parviendrais certainement pas à convaincre tout le monde d’adopter ou d’essayer le télétravail mais je reste convaincu que cela mérite d’être tenté. Pour des raisons de santé, vu la situation actuelle, mais également d’un point de vue écologique. Il est intéressant de constater que la baisse des émissions de toutes particules néfastes à notre planète à chuté depuis quelques semaines. Moins d’embouteillages en premier lieu. Revenons quelques dizaines d’années en arrière, une grande majorité des gens vivaient et travaillaient dans un périmètre géographique restreint. Aujourd’hui la distance moyenne domicile-travail ne fait que s’accroitre. Je veux bien croire que l’équation n’est pas aussi simple, mais à mon niveau, le télétravail signifie aussi revitaliser les commerces locaux, malgré le commerce en ligne …

Malheureusement, il reste des secteurs d’activité où le télétravail est impossible. D’autres où la mise en place est et restera problématique, mais en ce qui me concerne, activité de conseil orienté bases de données (et IT en général) qui tend à évoluer vers le « Cloud », est-ce que le présentiel doit être la norme ?

Je continuerais pour ma part à prendre du plaisir à me déplacer chez mes clients, nous avons tous besoins d’entretenir un lien social, et 100% télétravail me parait illusoire. Je prendrais toujours autant de plaisir à animer une formation sur site ou dans un centre de formation. Je serais aussi le premier à donner de mon temps pour organiser des évènements comme les SQLSaturday qui rassemblent un bon nombre de passionnés à chaque édition.

Mais il est peut-être temps de revoir le modèle historique du lieu de travail et donner sa chance au télétravail. Employeurs, managers, faites confiance à vos collègues. Salariés, la confiance ne se donne pas, elle se mérite. A vous de prouver par votre attitude que le télétravail peut avoir une plus-value pour votre entreprise, et entrer ainsi dans une relation gagnant-gagnant.

Pour ma part, mon planning reste quasi complet, grâce notamment à des clients qui me font confiance depuis des années pour des interventions régulières effectuées à distance.

Stay at home, stay safe, stay tuned …

Publié dans Non classé | 1 commentaire

SQLSaturday #993 – Paris 2020

Oyez ! Oyez ! Oyez !

Le SQLSaturday 993 est sur les rails !!!

Réservez votre Samedi 6 Juin et rendez-vous à Paris au 253 pour une journée d’échange autour de SQL Server. Et plus, car on ne change pas une équipe qui gagne. L’an dernier vous avez été nombreux à participer au Power Saturday, nous avons donc décidé de poursuivre sur la même formule.

Vous aurez donc droit à des sessions PowerBI, mais également Office 365, et peut être même un peu de Sharepoint ou Flow !

Cela dépendra des sessions qui seront postées ! Vous vous sentez l’âme d’un speaker ? Nous vous accueillons avec plaisir 

Vous pouvez proposer vos sessions sur le site Sessionize (https://sessionize.com/power-saturday-2020 ) et sur le site du SQLSaturday (https://www.sqlsaturday.com/993/Sessions/SubmittedSessions.aspx ) pour les sessions relatives à la plateforme de données.

Si vous hésitez, un peu de trac, nous pouvons organiser des sessions de mentoring voire même coprésenter avec vous si cela peut vous rassurer !

Happy Power Saturday !

Publié dans Conférence, Evènements | Tagué , | Laisser un commentaire

Azure – Latence réseau inter régions

En bon IT-Pro qui se respecte, je garde un œil sur mes métriques. OnPrem, je pense que vous disposez de tout le nécessaire, que ce soit à base de Nagios, Cacti, Zabbix, Centreon, PRTG et consorts …

Lorsque l’on travaille « OnPrem », la latence réseau est négligeable (ou du moins elle doit l’être !). Dès qu’il s’agit d’application Cloud, cette métrique n’est pas négligeable, forçant les développeurs à parfois penser différemment leur code afin de limiter le nombre d’aller-retours entre le client et le serveur.

Et tant qu’à profiter de la puissance du cloud, autant mondialiser vos applications, et pourquoi pas utiliser de la géo-réplication SQL Azure pour pousser des données aux 4 coins du monde et les rapprocher des utilisateurs ? Azure propose ainsi des DataCenters répartis dans le monde entier (ou presque).

A toutes fins utiles, voici un tableau des latences réseau entre les différentes régions Azure.

Ces données datent de Janvier 2020. Vous pouvez trouver des données actualisées à l’adresse https://docs.microsoft.com/en-us/azure/networking/azure-network-latency

On peut noter que le Brexit n’a pas affecté la latence UK South et UK West vers France Central (7 et 8 ms). On sent la rigueur Allemande qui focalise sur des nombres ronds (10 et 20 ms). Notez aussi que nous, amateurs de Chocolatines, mettons 8ms pour aller chercher le chocolat en Suisse (Ouest) alors qui faut 11ms pour constituer un pain au chocolat. Comme quoi, la vérité sort du réseau.

Just kidding 🙂

Happy networking

Publié dans Azure, Non classé | Tagué | Laisser un commentaire

Azure SQL Database – Créer un xEvent

Un des freins à l’adoption remonté par mes clients concernant Azure SQL Databases est sans conteste la perte de maitrise de la part du DBA.

Même si je fais partie des « vieux » DBA, j’ai appris que quand le vent souffle il est préférable de construire un moulin plutôt qu’un mur. Depuis plus d’une décennie déjà un pan de notre activité a disparue avec la virtualisation. Et cela devrait continuer avec la containerisation.

Et pour autant, les DBAs ont autant de travail. Il faut dire que le nombre d’instances / bases explose, les types de stockage de multiplient avec en point de mire le fameux « Big Data ».

Bref, je pense que notre métier ne va pas disparaitre, mais de toute évidence il se transforme. D’administrateur de bases de données, nous devons devenir administrateur de données.

En première ligne des « nouveautés » à appréhender figure Azure SQL Databses. Nouveauté avec des guillemets car cela fait 10 ans (la maturité ?) que le service existe … Oui, il est présent depuis le lancement de Azure, SQL Server faisait partie des premières offres de services !!!

Avec SQL Azure, les tâches à effectuer sont légèrement différentes. Je reste persuadé que le travail d’optimisation opéré par le DBA devient crucial une fois basculé sur du PaaS. Et il faut avouer que l’optimisation, le gain de performance, offre une certaine satisfaction, voire reconnaissance (en revanche, on ne m’a jamais félicité pour un backup réussi !).

Corolaire, il faut auparavant déterminer les goulets d’étranglement, les requêtes posant des problèmes de performance, un nombre de lectures logiques trop important… Le portail Azure propose des fonctionnalités, mais ne brusquons par le DBA, capitalisons sur les acquis …

Les évènements étendus …

Cela fait un certain temps que je vous suggère de franchir le pas, de passer du Profiler au xEvents.

Il ne vous aura pas échappé que les sessions d’évènement sont disponibles dans la base de données à compter du moment où vous êtes connectés sur un « serveur » Azure SQL.

Il est possible de stocker le résultat de la trace en mémoire, le fameux « Ring buffer » mais également sous forme de fichier… Mais comment traiter la notion de « fichier » lorsque l’on n’a pas accès au système d’exploitation ?

Azure propose la notion de Conteneurs dans un compte de stockage. Et c’est précisément cela que nous allons utiliser.

Dans un premier temps, il faut créer une master key et un credential pour donner accès au compte de stockage. Depuis SQL Server 2016, il est possible de créer un credential dans une base de données.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘aSuperS3cretP@ssw0rd!’
GO


CREATE DATABASE SCOPED CREDENTIAL
        [https://conseilitazurefile.blob.core.windows.net/sqlserver-xevent-files]
    WITH
        IDENTITY = ‘SHARED ACCESS SIGNATURE’,  
        SECRET = ‘sv=………………’
    ;
GO

Une fois fait, il suffit de créer la session d’évènement étendu. Notez le « ON DATABASE ».

CREATE EVENT SESSION [Long running Queries] ON DATABASE 
ADD EVENT sqlserver.blocked_process_report(
    ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.query_hash,sqlserver.session_id,sqlserver.sql_text,sqlserver.username)),
ADD EVENT sqlserver.rpc_completed(SET collect_statement=(1)
    ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.query_hash,sqlserver.session_id,sqlserver.sql_text,sqlserver.username)
    WHERE ([package0].[equal_boolean]([sqlserver].[is_system],(0)) AND [package0].[greater_than_equal_uint64]([duration],(250000)))),
ADD EVENT sqlserver.sql_batch_completed(
    ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.query_hash,sqlserver.session_id,sqlserver.sql_text,sqlserver.username)
    WHERE ([package0].[equal_boolean]([sqlserver].[is_system],(0)) AND [package0].[greater_than_equal_uint64]([duration],(250000))))
ADD TARGET package0.event_file(SET filename=N’https://conseilitazurefile.blob.core.windows.net/sqlserver-xevent-files/adventureworks-
ongrunningqueires.xel’)
WITH (MAX_MEMORY = 10 MB, MAX_DISPATCH_LATENCY = 10 SECONDS)

Le code pour démarrer la session est identique, au scope près.

ALTER EVENT SESSION [Long running Queries] ON DATABASE
STATE = START;

Tous les évènements ne sont pas disponibles sur SQLAzure, contrairement à SQL Server. La requête suivante permet de les lister.

SELECT
        o.object_type,
        p.name         AS [package_name],
        o.name         AS [db_object_name],
        o.description  AS [db_obj_description]
    FROM
                   sys.dm_xe_objects  AS o
        INNER JOIN sys.dm_xe_packages AS p  ON p.guid = o.package_guid
    WHERE
        o.object_type in
            (
            ‘action’,  ‘event’,  ‘target’
            )
    ORDER BY
        o.object_type,
        p.name,
        o.name;

L’évènement Blocked Process Report comporte un paramétrage côté serveur, mais qui ici n’est pas accessible. La valeur est fixée à 20 secondes.

Pour lire les données, la fonction est identique : sys.fn_xe_file_target_read_file :

SELECT
        *,
        CAST(event_data AS XML) AS [event_data_XML]  
    FROM
        sys.fn_xe_file_target_read_file
            (
                ‘https://conseilitazurefile.blob.core.windows.net/sqlserver-xevent-files/adventureworks-longrunningqueires&rsquo;,
                null, null, null
            );
GO

Le champs XML vous donnera le détail des informations de l’évènement, comme auparavant …

Comme quoi les « vieux » outils ne sont pas à jeter lors du passage au Cloud !

Happy xEvents

Publié dans Azure, Non classé, SQL Azure | Tagué , | Laisser un commentaire