
Einleitung
Während Organisationen weiterhin cloudbasierte Lösungen für ihre Geschäfte übernehmen, ist die Notwendigkeit eines effizienteren und automatisierten Ansatzes für die Softwareentwicklung und Bereitstellung immer wichtiger geworden. Die Verwendung von Continuous Integration und Continuous Deployment (CI/CD) Methoden hat in den letzten Jahren an Popularität gewonnen und ist zu einem wesentlichen Aspekt eines Softwareentwicklungslebenszyklus geworden. Mit Hilfe von Azure DevOps, einer cloudbasierten Lösung von Microsoft, können Entwickler leicht CI/CD-Pipelines für SQL Server-Datenbanken erstellen und bereitstellen.
Was ist CI/CD für SQL Server-Datenbanken in Azure DevOps? CI/CD ist ein Prozess, der es Entwicklern ermöglicht, Datenbankänderungen automatisch zu erstellen, sie zu testen und bereitzustellen. Es beinhaltet die Verwendung eines Versionskontrollsystems zur Verwaltung von Änderungen am Datenbankschema, automatisierte Tests und automatisierte Bereitstellung, um sicherzustellen, dass die Änderungen ohne manuelle Intervention in die Produktionsumgebung bereitgestellt werden.
Komponenten
Folgende Hauptkomponenten sind erforderlich, um CI/CD für SQL Server-Datenbanken in Azure DevOps zu implementieren:
- SQL Server Data Tools (SSDT): SSDT ist ein Toolset, welches Entwicklern ermöglicht, SQL Server-Datenbanken zu entwerfen, entwickeln und bereitzustellen. Es ist ein Plugin für Visual Studio, das Entwicklern ermöglicht Datenbankprojekte zu erstellen, die zur Verwaltung von Änderungen am Datenbankschema und Daten verwendet werden können.

- Visual Studio: Visual Studio ist eine Entwicklungsumgebung zum Erstellen von Anwendungen. Es wird verwendet, um SQL Server-Datenbankprojekte mit SSDT zu entwickeln.

- Azure DevOps: Azure DevOps ist eine cloudbasierte Lösung von Microsoft, die eine vollständige Palette von Tools zur Verwaltung des Softwareentwicklungslebenszyklus bereitstellt. Es umfasst Funktionen für Versionskontrolle, Build- und Release-Management und Projektmanagement.

Prozess
Der folgende Prozess ist typisch für die Implementierung von CI/CD für SQL Server-Datenbanken in Azure DevOps:
- Erstellen eines Datenbankprojekts: Erstellen Sie ein Datenbankprojekt in Visual Studio mit SSDT. Dieses Projekt enthält alle Datenbankschemata und Datenobjekte, die bereitgestellt werden müssen.

- Verbindung zu einem Versionskontrollsystem herstellen: Verbinden Sie das Datenbankprojekt mit einem Versionskontrollsystem wie Git oder TFS. Dadurch können Entwickler Änderungen am Datenbankschema und Daten verwalten.

- Erstellen einer Build-Pipeline: Erstellen Sie eine Build-Pipeline in Azure DevOps, die das Datenbankprojekt kompiliert und eine DACPAC-Datei generiert. Diese Datei enthält die SQL-Skripte, die zur Bereitstellung der Datenbankänderungen erforderlich sind.

- Erstellen einer Release-Pipeline: Erstellen Sie eine Release-Pipeline in Azure DevOps, die die Datenbankänderungen in der Zielumgebung bereitstellt. Die Release-Pipeline kann mehrere Stufen wie Dev, Test und Produktion umfassen.

-
Automatisierung von Tests: Fügen Sie automatisierte Tests zur Release-Pipeline hinzu, um sicherzustellen, dass die Änderungen die Anwendung nicht beeinträchtigen. Dies kann Unit-Tests, Integrationstests und Leistungstests umfassen.
-
Überwachen und Verfolgen: Überwachen und verfolgen Sie die Pipeline mithilfe von Azure DevOps-Dashboards und -Berichten. Dadurch können Probleme identifiziert und der Fortschritt der Pipeline verfolgt werden.
Vor der Einführung von Azure DevOps haben Entwickler eine Vielzahl von Tools und Prozessen zur Implementierung von CI/CD für SQL Server-Datenbanken verwendet. Einige der beliebten Tools sind Redgate SQL Toolbelt, Octopus Deploy und Jenkins. Diese Tools bieten ähnliche Funktionen wie Azure DevOps, Versionskontrolle, Build- und Release-Management und automatisierte Tests.
Leistungspakete der Mainzer Datenfabrik
Als professioneller SQL Server Support und zertifizierter Microsoft Partner unterstützen wir Sie in allen Fragen und individuellen Problemen rund um Ihre Serverumgebung, egal ob vor Ort oder remote. Überzeugen Sie sich selbst von unserem vielfältigen Angebot und den individuellen Leistungspaketen.
Azure DevOps
CI/CD für SQL Server-Datenbanken in Azure DevOps
Azure DevOps ist eine cloudbasierte Plattform, die eine Reihe von Tools und Services für Teams bereitstellt, um Software zu planen, zu entwickeln, zu testen und bereitzustellen. Sie ist darauf ausgelegt, Teams effektiver zusammenarbeiten zu lassen und qualitativ hochwertige Softwareprodukte schneller zu liefern. In diesem Teil des Artikels werden wir diskutieren, wie man Azure DevOps für die kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) von SQL Server-Datenbanken verwendet.
Übersicht über Azure DevOps
Azure DevOps ist in mehrere Dienste unterteilt. Diese sind Azure Boards, Azure Repos, Azure Test Plans, Azure Artifacts und Azure Pipelines. Jeder dieser Dienste bietet eine Reihe von Tools und Funktionen, die Teams in die Lage versetzen, effektiver zusammenzuarbeiten und ihren Softwareentwicklungsprozess zu optimieren.

Azure Repos
Azure Repos ist ein Versionskontrollsystem, welches die Verwaltung ihrer Codebasis mithilfe von Git oder Team Foundation Version Control (TFVC) ermöglicht. Es bietet Funktionen wie Branch-Management, Pull Requests und Code-Reviews, um Code-Qualität und Zusammenarbeit sicherzustellen.

Projekte
Projekte sind die oberste Ebene in Azure DevOps, die verwandte Work Items, Repositories, Pipelines und andere Ressourcen organisieren und verwalten. Teams können mehrere Projekte erstellen, um unterschiedliche Softwareentwicklungen zu trennen.

Versionskontrolle
Die Versionskontrolle ist ein grundlegender Bestandteil jedes Softwareentwicklungsprozesses. Es hilft Teams dabei, Änderungen an ihrer Codebase zu verwalten, Änderungen zu verfolgen und diese bei Bedarf rückgängig zu machen. Azure Repos unterstützt zwei Arten von Versionskontrollsystemen: Git und TFVC. Git ist ein verteiltes Versionskontrollsystem, das es Teams ermöglicht, unabhängig voneinander an Code zu arbeiten und Änderungen später zusammenzuführen. TFVC ist ein zentrales Versionskontrollsystem, das es Teams ermöglicht, gleichzeitig an Code zu arbeiten und Änderungen schneller zu integrieren.

Branch Policies
Branchrichtlinien sind Regeln die bestimmen, wie Codeänderungen vorgenommen und in einen Branch zusammengeführt werden. Teams können Branchrichtlinien verwenden, um die Codequalität zu gewährleisten, versehentliche Änderungen zu verhindern und sicherzustellen, dass Änderungen genehmigt werden bevor sie zusammengeführt werden. Beispiele für Branchrichtlinien sind Anforderungen für Codeüberprüfungen, Build-Validierungsanforderungen und Regeln für den Branchschutz.
Azure Boards
Azure Boards ist ein Service, der eine Reihe von Tools zur Verwaltung von Arbeitsaufträgen bereitstellt. Dazu gehören Benutzerstories, Bugs und Probleme. Es ermöglicht Teams, Arbeit mit anpassbaren Kanban-Boards, Backlogs und Dashboards zu planen, zu verfolgen und zu verwalten.
Refining
Refining ist der Prozess, bei dem hochrangige Arbeitspakete in kleinere, leichter zu bewältigende Teile aufgeteilt werden. Teams können Verfeinerungen nutzen, um Anforderungen zu klären, den Aufwand abzuschätzen und Sprints zu planen. Azure Boards unterstützt verschiedene Tools zur Verfeinerung, darunter Backlog-Grooming, Sprint-Planung und Iterations-Planung.
Azure Pipelines
Azure Pipelines ist ein Service der Anwendungen für jede Plattform, einschließlich Azure, AWS und Google Cloud Platform, erstellt, testet und bereitstellt. Es unterstützt eine Vielzahl von Programmiersprachen und Plattformen - darunter .NET, Java, Python und Node.js. Teams können Azure Pipelines verwenden, um kontinuierliche Integrations- und Bereitstellungspipelines (CI/CD) zu erstellen, die ihre Anwendungen automatisch erstellen, testen und bereitstellen.
State-Based vs Migration-Based
State-based deployment ist eine Bereitstellungsstrategie, bei der ein Bereitstellungsskript erstellt wird, dass den aktuellen Zustand des Datenbankschemas und der Daten erfasst. Das Bereitstellungsskript wird dann auf die Zielumgebung angewendet, um sie auf denselben Stand wie die Quellumgebung zu bringen. Migration-based deployment ist eine Bereitstellungsstrategie, bei der eine Reihe von Migrations-Skripten erstellt werden, die inkrementelle Änderungen am Datenbankschema und den Daten vornehmen. Die Migrations-Skripte werden nacheinander auf die Zielumgebung angewendet, um sie auf den gewünschten Stand zu bringen.
Azure Artifacts
Azure Artifacts ist ein Service, der eine Reihe von Tools zur Verwaltung und gemeinsamen Nutzung von Paketen wie NuGet, npm, Maven und Python bereitstellt. Es ermöglicht Teams private Paket-Feeds zu erstellen, um Pakete innerhalb ihrer Organisation zu teilen und bietet Funktionen wie Versionsverwaltung, Paketmanagement und Zugriffskontrolle.