I disse dage starter udviklingsteams nye projekter fra at vælge et versionskontrolsystem. Der er mange fordele ved kildekontrolsystemer til at koordinere udviklingsteamets indsats. Det sikrer et komplet revisionsspor af alle ændringer i koden og giver teamet mulighed for at reproducere enhver specifik revision eller build. Sammen med programmeringskoden kan og bør databaser placeres under kildekontrol. I denne artikel vil vi se på, hvordan man implementerer en database, der er i fjernlageret.
Antag, at du har et fjernlager, der indeholder en databasescriptmappe. Mappen indeholder DDL-scripts til databaseobjekter. Opgaven er at installere en database på den lokale pc. Til demonstrationsformålet vil jeg bruge Visual SVN og Tortoise SVN Repository Browser. Følgende billede viser demo-lageret, der er vært for databasens scriptmapp.
Det første trin er at oprette en lokal arbejdskopi. For at gøre det skal du oprette en mappe på den lokale harddisk og udføre SVN-udbetalingshandlingen.
Når handlingen er afsluttet, vil alle SQL-filer blive gemt i den lokale mappe. Nu kan du implementere databasen. Det er naturligvis ikke en god praksis at udføre alle SQL-filer manuelt én efter én. For at automatisere implementeringen kan du oprette en batchfil.
Opretter BATCH-fil
Du skal oprette en batch-fil. I denne demo vil jeg oprette filen sales_demo_build.bat med følgende indhold:
sqlcmd -S "PC_NAME\SQLEXPRESS" -U "sa" -P "sa" -i "D:\sales_demo_build\sales_demo_build.sql" PAUSE
Jeg bruger SQLCMD-værktøjet i batchfilen. For at få flere oplysninger om SQLCMD-argumenter, læs følgende artikel:sqlcmd Utility.
Ved hjælp af SQLCMD kan vi udføre filen sales_demo_build.sql. Det vil tage alle SQL-filer fra arbejdsmappen og bygge databasen. Salgsdemo_build.sql-filen indeholder følgende kode:
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
Scriptet indeholder en liste over SQL-filer, der skal udføres.
:r er en SQLCMD-kommando, der parser yderligere Transact-SQL-sætninger og sqlcmd-kommandoer fra filen specificeret af i sætningscachen.
Nu kan vi køre batchfilen:
Det er det! Nu kan vi opdatere SSMS Object Explorer og begynde at arbejde med databasen:
Som du kan se, er det en enkel måde at implementere en database på, der er gemt i kildekontrol. Det er dog ikke den eneste måde at løse denne opgave på. Vi vil tale om alternative tilgange i de næste artikler.
Nyttigt værktøj:
dbForge Source Control – kraftfuld SSMS-tilføjelse til styring af SQL Server-databaseændringer i kildekontrol.