NIENKERKE CONSULTING GmbH Über uns Leistungen Qualität Kontakt

Für mehr Qualität in (Microsoft) Daten-Projekten

Damit ist nicht Daten-Qualität gemeint. Daten-Qualität wird bei der Erzeugung der Daten durch ein verändertes Bewusstsein für die Daten und das Anpassen der entsprechenden Prozesse erreicht.

Gemeint ist die Qualität des Entwicklungsprozesses in Daten-Projekten. Diese schafft wiederholbar stabile und verlässliche Ergebnisse und damit Vertrauen und Akzeptanz bei den Konsumenten der Daten-Produkte.

Verschiedene einzelne Maßnahmen steigern die Qualität des gesamten Entwicklungsprozesses nachhaltig.

SQL-Datenbankprojekte

SQL-Datenbankprojekte

Der App-Source-Code liegt sicher verwahrt in der Source-Code-Verwaltung. Was ist mit der SQL-Datenbank? Lose Skript-Sammlung oder nur eine operative Datenbankinstanz? Welche Skripte sind aktuell? Was passiert, wenn die Datenbankinstanz beschädigt wird oder verloren geht? Wie können Änderungen vorgenommen werden ohne dabei unbemerkt Fehler an anderen Stellen einzubauen?

Hier helfen SQL-Datenbankprojekte. Egal ob operative Datenbank oder Data Warehouse, die gesamte Struktur der SQL-Datenbank (Tabellen, Sichten, gespeicherte Prozeduren, etc.) wird in Form einzelner SQL-Objekte in einem SQL-Datenbankprojekt verwaltet. Dadurch kann die Datenbank ebenfalls als Quellcode in einer Versionsverwaltung abgelegt und mit CI/CD-Pipelines automatisch in verschiedenen Umgebungen bereitgestellt werden.

Übersicht

  • Entwicklung mit entsprechenden Erweiterungen in Visual Studio oder Visual Studio Code einschließlich Versionierung des Quellcodes über beispielsweise Git
  • T-SQL-Code zur Definition jedes einzelnen Datenbankobjektes
  • Erstellen des Projektes prüft die Syntax entsprechend der Zielplattform sowie die Verweise zwischen den Objekten und erzeugt als Ausgabe eine .dacpac Datei
  • Bereitstellung (z.B. mit SqlPackage-Tool) gleicht eine evtl. vorhandene Datenbank mit dem Projekt ab und erzeugt nur ein Upgrade-Skript um notwendige Änderungen durchzuführen
  • SQL-Datenbankprojekt ist "Single Source of Truth" des Datenbankschemas

Projekttypen

  • Ursprüngliches Projektformat basierend auf MSBuild (.NET Framework) wird von den SQL Server Data Tools (SSDT) in Visual Studio verwendet
  • Neueres Projektformat im SDK-Stil basierend auf .NET Core SDK-Formatprojekten wird von der SQL Database Projects Extension für Visual Studio Code verwendet
  • Die Unterstützung für SDK-Stil Projekte in Visual Studio befindet sich in Preview
  • SDK-Stil Projekte bilden die Obermenge der unterstützten Features mit Ausnahme von SQLCLR-Objekten, die .NET Framework erfordern
  • Ursprüngliche SQL-Projekte können in SDK-Stil Projekte konvertiert werden

Zum ausführlichen Vergleich der Feature-Sets auf Microsoft Learn.

Vorgehensweise

  • Neues Projekt anlegen ODER aus vorhandener Datenbank erstellen ODER aus Fabric herunterladen
  • Optional Datenbank importieren (nur bei neuem Projekt) oder Schemavergleich
  • Neue Datenbank-Objekte hinzufügen, vorhandene ändern oder löschen
  • Datenbank-Projekt erstellen - 0 Warnings sollte der Qualitätsanspruch sein, Errors verhindern eine Bereitstellung
  • Datenbank-Projekt auf der Zielplattform bereitstellen

Walk-Through: Fabric Warehouse in VS Code mit SQL Database Projects Extension

Fabric Lakehouse und Fabric Warehouse sind zwar besonders, da sie nur einen SQL Analytics Endpoint bereitstellen und intern mit Parquet-Dateien arbeiten. Aber auch diese Objekte lassen sich in einem SQL Datenbank Projekt verwalten, wobei bestimmte Einschränkungen zu berücksichtigen sind.

Für dieses Beispiel haben wir vorab in Fabric ein Warehouse "SampleDWH" erstellt und mit den Beispieldaten von Microsoft beladen.

1. Projekt aus Datenbank erstellen

Create Project From Database

In VS Code (SQL Database Projects Extension) können wir das Schema des Warehouses über das Feature "Create Project From Database" importieren.

2. Datenbank-Objekt ändern

Bearbeiten der View

Da wir für eine detailliertere Analyse zusätzliche Kennzahlen benötigen, erweitern wir die View "vw_PaymentAnalysis" um die noch fehlenden Spalten.

3. Projekt erstellen

Fehler im Buildvorgang

Das Erstellen des Projekts gibt uns sofort die Rückmeldung, dass wir einen Fehler in unserem Source-Code haben. Es gibt ein Problem mit einer der neu hinzugefügten Spalten in der bearbeiteten View. Die referenzierte Spalte [TollAmount] kann nicht aufgelöst werden.

Nach kurzer Prüfung ist klar, wir haben einen Tippfehler. Der Spaltenname wird zu [TollsAmount] korrigiert und die erneute Erstellung des Projekts ist erfolgreich.

4. Datenbank bereitstellen

Datenbank bereitstellen

Abschließend können wir das geänderte Datenbank Schema auf der Zielplattform bereitstellen.

Dazu müssen wir zunächst eine Verbindung zur Zielplattform herstellen. Durch einen Abgleich zwischen dem Schema im SQL Projekt und der Datenbank-Instanz werden die Unterschiede identifiziert.

Die notwendigen Änderungen können wir entweder als SQL Statements in einem Skript generieren lassen, das wir anschließend manuell gegen die Datenbank-Instanz ausführen. Oder wir veröffentlichen die Änderungen direkt.

Schauen wir anschließend in Fabric mit dem Explorer in das Warehouse Schema, sehen wir die neu hinzugefügten Spalten.

Alle Informationen zu SQL-Datenbankprojekten gibt es auf Microsoft Learn.

Quellcodeverwaltung und Versionskontrolle

Quellcodeverwaltung

Du entwickelst auf der Produktivumgebung oder hast zwar eine Entwicklungsumgebung aber immer nur den aktuellen Entwicklungsstand?

Was, wenn diese eine Version versehentlich gelöscht wird oder der Admin ein Backup vom Server einspielen muss und damit einen alten Stand wiederherstellt? Wie kommst Du zu einem lauffähigen Entwicklungsstand zurück, wenn eine Deiner letzten Änderungen zu einem Fehler an ganz anderer Stelle geführt hat und das erst eine Woche später aufgefallen ist? Wie hältst Du den Überblick über unzählige Kopien und Zwischenstände Deiner Entwicklungsarbeit?

Was das Backup für die Datenbank ist, ist die Versionskontrolle für Deine Entwicklung! Diese hilft Dir, Deine Entwicklungsarbeit zu sichern und zu versionieren, auch im Team. Die Nachverfolgung aller Änderungen ist problemlos möglich und jederzeit kannst Du auf einen älteren Entwicklungsstand zurückgreifen.

Entwicklung mit Netz und doppeltem Boden!

Übersicht

  • Die zu entwickelnden Objekte sollten in einer Form von Quellcode-Dateien vorliegen
  • Binär-Dateien sind grundsätzlich möglich, aber nur mit eingeschränkter Funktionalität
  • Objekte können lokal oder in einem eigenen isolierten Arbeitsbereich entwickelt werden
  • Alle Änderungen werden zentral in einer gemeinsamen Quellcode-Basis verwaltet
  • Ermöglicht automatisches Erstellen und Testen (Continuous Integration)

Szenarien und Vorgehensweise

Bei Entwicklungsprozessen, die auf einer gemeinsamen zentralen Umgebung aufsetzen, wie beispielsweise einem Fabric-Arbeitsbereich, muss darauf geachtet werden, dass sich Entwickler nicht gegenseitig in ihrer Arbeit stören. Grundsätzlich lassen sich zwei Szenarien unterscheiden.

Lokale Entwicklung mit Client-Tools

  • Nur für Objekte, die in Client-Tools (z.B. Power BI Desktop) verfügbar bzw. bearbeitbar sind
  • Klonen des zentralen Repository in ein lokales Repository
  • Entwickeln auf dem lokalen Computer und Sichern der Entwicklungsarbeit im lokalen Repository
  • Übertragen der Änderungen aus dem lokalen Repository in das zentrale Repository

Entwicklung in isoliertem Arbeitsbereich

  • Objekte, die beispielsweise nur in Fabric verfügbar sind und dort entwickelt werden können
  • Erstellen eines Feature-Branch im zentralen Repository
  • Verknüpfen des Feature-Branch mit einem isolierten Arbeitsbereich
  • Entwickeln im eigenen isolierten Arbeitsbereich und Sichern der Entwicklungsarbeit im Feature-Branch
  • Übertragen der Änderungen aus dem Feature-Branch in den Main-Branch

Alle Informationen zu Microsoft Fabric-Git-Integration gibt es auf Microsoft Learn.

Copyright 2025 by NIENKERKE CONSULTING GmbH