Microsoft Polyglot Notebooks eröffnen interessante Möglichkeiten. Dieser Artikel greift das Thema noch einmal auf und zeigt anhand der Kommunikation mit einer MS SQL Datenbank, wie man mit der VS-Code-Erweiterung arbeiten kann.
Das Hinzufügen der Extension für Polyglot Notebooks.
(Bild: Drilling / Microsoft)
Im Beitrag zum dynamischen Kernel Picker für Microsoft Polyglot Notebooks hatten wir bereits kurz über die Entstehungsgeschichte der Polyglot Notebooks referiert. Zur Auffrischung: Bei Microsofts Polyglot Notebooks handelt es sich um Weiterentwicklung der .NET Interactive Notebooks in Visual Studio Code.
Da Entwickler und Entwicklerinnen in der Regel die jeweils optimale Sprache für die jeweilige Aufgabe einsetzen, wurde das zugrunde liegende .NET Interactive über die Jahre schrittweise zu einer Engine weiterentwickelt. Schon vor der Umbenennung in „Polyglot Notebooks“ war diese dazu in der Lage, mehrere Sprachen auszuführen, und integrierte .NET-Sprachen in das Jupyter-Ökosystem.
Daher bietet die Lösung heute vollständige Unterstützung von Sprachservern und die gemeinsame Nutzung von Variablen für C#, F#, PowerShell, HTML, Mermaid, JavaScript sowie SQL. Es sind insbesondere die Sprachkombinationsmöglichkeiten, die .NET Interactive zu einem leistungsstarken Kernel für Jupyter-Notebooks machen, mit denen sich unterbrechungsfreie, mehrsprachige Workflows umsetzen lassen.
Im Jahr 2022 hatte Microsoft eine Funktion zur dynamischen Kernelauswahl angekündigt. Die Implementierung Ende 2023 war der Anlass für unseren letztjährigen Artikel. Unter anderem brachte sie eine Verbesserung bei der Unterstützung von SQL und für Microsofts Kusto Query Language (KQL) mit. Den SQL-Support wollen wir uns hier noch einmal anschauen.
Polyglot Notebooks lassen sich nämlich auch einfach nur als VS-Code-Extension nutzen, etwa zum Abfragen eine SQL-Datenbank. Das Ergebnis könnte man dann in einem Programm beispielsweise an JavaScript weitergeben und dann wiederum in Javascript etwas Sinnvolles mit den Daten anstellen. Der Clou dabei ist, dass der gesamte Workflow im gleichen Tool, nämlich der Notebook-Datei, umgesetzt wird.
Wie man die Extension in Betrieb nimmt, hatten wir bereits grob beschrieben. In der Bildergalerie vollziehen wir die Schritte noch einmal nach.
Somit ist jede Zelle im Notebook eine eigene strukturelle Einheit, die wahlweise Code einer bestimmten Sprache oder Markdown (Kommentare) enthält. Mit einem Klick auf „Alle ausführen“ ist es beispielsweise möglich, sämtliche Zellen nacheinander auszuführen und die Ausgabe anzuzeigen. Über die beiden kleinen Dreiecks-Symbole oben rechts können wir aber auch einzelne Zellen ausführen. Bei etwaigen Problemen lässt sich der jeweilige Kernel problemlos neu starten, ohne die ganze Entwicklungsumgebung in Mitleidenschaft zu ziehen. Ein Klick auf „Variablen“ zeigt sämtliche Variablen im Kernel an.
Je nachdem, wie eine datengetriebene Anwendung im Detail aufgebaut ist, können wir also verschiedene Sprachen und Technologien (C#, SQL, Mermaid, das aus Markdown Grafiken gestaltet und vor allem so genannte Polyglot Magic Commands) in einem Notebook kombinieren und die Komponenten miteinander interagieren lassen. Unter Magic Commands versteht Microsoft spezifische Befehle für Polyglot Notebooks, mit deren Hilfe User z. B. ihre Notebook-Umgebung steuern können, etwa zum Konfigurieren von Variablen, oder um Code innerhalb einer Code-Zelle in anderen Sprachen ausführen zu können.
SQL-Datenbank abfragen
Nun wollen wir den Umgang mit Notebooks mit aus unserem VS-Code-/SQL-Server-Artikel verknüpfen. So könnte man später Daten abfragen, die in einer SQL-Datenbank liegen. Um die Verbindung zu einer MS-SQL-Datenbank zu konfigurieren, gilt es zunächst, die zu verwendende Verbindungszeichenfolge zu erstellen.
Hierfür werden, wie schon im SQL-Artikel erläutert, benötigt: ein öffentlicher oder privater DNS-Name (Endpunkt-URL) des SQL-Servers, der Name der Datenbank selbst, der Benutzername des SQL-Administrators und dessen Passwort. Markdown lässt sich wahlweise für das ganze Notebook oder in einzelnen Zellen verwenden. Dank Markdown ist es möglich, die zugehörigen Anweisungen komfortabel in einer Markdown-Zelle zu kommentieren:
## SQL Verbindungszeichenfolge generierenDas Ausführen dieser Zelle generiert eine SQL-Server-Verbindungszeichenfolge; dabei werden Sie nach Benutzername und Passwort gefragt“.
Das Definieren einer SQL-Verbindungszeichenfolge.
(Bild: Drilling / Microsoft)
Der Name des SQL-Administrators (sqlusername) und dessen Passwort (password) hingegen sollen abgefragt werden. Mit Polyglot Magic Commands lässt sich das so umsetzen, wie in der nebenstehenden Abbildung. Indem wir in der C#-Zelle die abgebildeten Magic Commands anwenden, können die erstellten Variablen direkt in der C#-Zelle verwendet werden. Die zugehörige Code-Zelle erstellen wir in C#-Code, etwa so:
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
var URLdbserver = "ctdotnetappsqldbdbserver.database.windows.net"; var DatabaseName = "DotNetAppSqlDb_db"; #!set --value @input:"Gib Benutzername" --name sqlusername #!set --value @password:"Gib Passwort" --name password
Das Erstellen einer SQL-Server-Verbindungszeichenfolge in einem Notebook.
(Bild: Drilling / Microsoft)
Das klappt übrigens auch ohne Magic-Command in purem C#, hierfür ist es allerdings erforderlich, die Bibliothek „Microsoft.DotNet.Interactive“ einzubinden. Ist das erledigt, können wir z. B. SQL-Code in ihr Notebook integrieren.