Heutzutage beginnen Entwicklungsteams neue Projekte mit der Auswahl eines Versionskontrollsystems. Es gibt viele Vorteile von Quellcodeverwaltungssystemen bei der Koordinierung der Bemühungen des Entwicklungsteams. Es gewährleistet einen vollständigen Audit-Trail aller Änderungen am Code und ermöglicht dem Team, jede spezifische Revision oder jeden Build zu reproduzieren. Zusammen mit dem Programmiercode können und sollten Datenbanken unter Quellcodeverwaltung gestellt werden. In diesem Artikel sehen wir uns an, wie eine Datenbank bereitgestellt wird, die sich im Remote-Repository befindet.
Angenommen, Sie haben ein Remote-Repository, das einen Datenbankskriptordner enthält. Der Ordner enthält DDL-Skripts für Datenbankobjekte. Die Aufgabe besteht darin, eine Datenbank auf dem lokalen PC bereitzustellen. Zu Demonstrationszwecken werde ich Visual SVN und Tortoise SVN Repository Browser verwenden. Das folgende Bild zeigt das Demo-Repository, das den Datenbankskriptordner hostet.
Der erste Schritt besteht darin, eine lokale Arbeitskopie zu erstellen. Dazu müssen Sie einen Ordner auf der lokalen Festplatte erstellen und den SVN-Auscheckvorgang durchführen.
Sobald der Vorgang abgeschlossen ist, werden alle SQL-Dateien im lokalen Ordner gespeichert. Jetzt können Sie die Datenbank bereitstellen. Offensichtlich ist es keine gute Praxis, alle SQL-Dateien einzeln manuell auszuführen. Um die Bereitstellung zu automatisieren, können Sie eine Batch-Datei erstellen.
BATCH-Datei erstellen
Sie müssen eine Batchdatei erstellen. In dieser Demo erstelle ich die Datei sales_demo_build.bat mit folgendem Inhalt:
sqlcmd -S "PC_NAME\SQLEXPRESS" -U "sa" -P "sa" -i "D:\sales_demo_build\sales_demo_build.sql" PAUSE
Ich verwende das Dienstprogramm SQLCMD in der Batchdatei. Weitere Informationen zu SQLCMD-Argumenten finden Sie im folgenden Artikel:sqlcmd-Dienstprogramm.
Mit Hilfe von SQLCMD können wir die Datei sales_demo_build.sql ausführen. Es nimmt alle SQL-Dateien aus dem Arbeitsordner und erstellt die Datenbank. Die Datei sales_demo_build.sql enthält den folgenden Code:
SET NOCOUNT ON GO PRINT 'Creating sales_demo1 database' USE [master] GO DECLARE @db_name NVARCHAR(255); SET @db_name = N'sales_demo1'; IF EXISTS (SELECT 1 FROM sys.databases d WHERE d.name = @db_name) BEGIN EXEC (N'ALTER DATABASE '[email protected]_name+N' SET SINGLE_USER WITH ROLLBACK IMMEDIATE'); EXEC (N'DROP DATABASE '[email protected]_name); END; EXEC (N'CREATE DATABASE '[email protected]_name); GO USE sales_demo1 GO :On Error exit :r "D:\sales_demo1\Tables\dbo.Customers.sql" :r "D:\sales_demo1\Tables\dbo.OrderLines.sql" :r "D:\sales_demo1\Tables\dbo.Orders.sql" :r "D:\sales_demo1\Tables\dbo.Products.sql" :r "D:\sales_demo1\Tables\Constraints\Foreign Keys\dbo.OrderLines.FK.sql" :r "D:\sales_demo1\Tables\Constraints\Foreign Keys\dbo.Orders.FK.sql" PRINT 'Creation is Completed' GO
Das Skript enthält eine Liste der auszuführenden SQL-Dateien.
:r ist ein SQLCMD-Befehl, der zusätzliche Transact-SQL-Anweisungen und sqlcmd-Befehle aus der durch angegebenen Datei in den Anweisungscache parst.
Jetzt können wir die Batch-Datei ausführen:
Das ist es! Jetzt können wir den SSMS-Objekt-Explorer aktualisieren und mit der Arbeit an der Datenbank beginnen:
Wie Sie sehen können, ist dies eine einfache Methode zum Bereitstellen einer Datenbank, die in der Quellcodeverwaltung gespeichert ist. Dies ist jedoch nicht die einzige Möglichkeit, diese Aufgabe zu lösen. Wir werden in den nächsten Artikeln über alternative Ansätze sprechen.
Nützliches Tool:
dbForge Source Control – leistungsstarkes SSMS-Add-In zum Verwalten von SQL Server-Datenbankänderungen in der Quellcodeverwaltung.