Einleitung
Ein manueller Bereitstellungsprozess für Datenbankänderungen ist langsam und fehleranfällig. Jemand schreibt ein Skript, sendet es an den Datenbankadministrator und wartet darauf, dass es während eines Wartungsfensters ausgeführt wird. Wenn ein Fehler auftritt, ist ein Rollback schwierig, da niemand den genauen Zustand des Schemas vor der Änderung nachverfolgt hat. Entwickler, die an verschiedenen Features arbeiten, überschreiben die Änderungen untereinander, da kein strukturierter Workflow für Datenbankcode vorhanden ist.
Stellen Sie sich ein Team vor, das eine E-Commerce-Anwendung in der Azure SQL-Datenbank verwaltet. Drei Entwickler fügen Features hinzu, die Schemaänderungen erfordern. Eine fügt eine neue Produktkategorietabelle hinzu, eine andere ändert die gespeicherten Prozeduren der Auftragsverarbeitung und aktualisiert die Kunden-Nachschlageansichten. Ohne Quellcodeverwaltung, CI/CD-Pipelines und automatisierte Tests kollidieren diese Änderungen. Ein Hotfix, der direkt auf die Produktion angewendet wird, ist nicht mehr mit der Entwicklungsumgebung synchronisiert. Eine Bereitstellung überschreibt den Hotfix, was einen Produktionsausfall während Spitzenzeiten verursacht.
SQL-Datenbankprojekte und CI/CD-Pipelines lösen diese Probleme, indem Datenbankcode mit demselben Rigor wie Anwendungscode behandelt wird. Sie versionieren jedes Objekt, automatisieren Builds und Bereitstellungen, erkennen, wann die Livedatenbank vom Projekt abweicht, und testen Änderungen, bevor sie die Produktion erreichen.
Nach Abschluss dieses Moduls können Sie:
- Erstellen, Entwickeln und Validieren von Datenbankmodellen mithilfe von SQL-Datenbankprojekten, einschließlich im SDK-Stil.
- Konfigurieren Sie die Quellcodeverwaltung für SQL-Datenbankprojekte, und verwalten Sie Referenzdaten mit Skripts vor der Bereitstellung und nach der Bereitstellung.
- Verwalten von Verzweigungen, Pullanforderungen und Konfliktauflösung für Datenbankcode.
- Erkennen der Schemaabweichung mithilfe von Schemavergleichstools und SqlPackage.
- Implementieren Sie CI/CD-Pipelines mit GitHub Actions und Azure DevOps, einschließlich Secret-Management und Bereitstellungssteuerung.
- Entwerfen und Implementieren einer Teststrategie mit Komponententests und Integrationstests.