sql >> Databasteknik >  >> RDS >> Database

Distribuera databas från källkontroll

Dessa dagar startar utvecklingsteam nya projekt från att välja ett versionskontrollsystem. Det finns många fördelar med källkontrollsystem för att samordna utvecklingsteamets insatser. Det säkerställer ett komplett revisionsspår av alla ändringar i koden och låter teamet reproducera vilken specifik revision eller konstruktion som helst. Tillsammans med programmeringskoden kan och bör databaser placeras under källkontroll. I den här artikeln kommer vi att ta en titt på hur man distribuerar en databas som finns i fjärrförvaret.

Antag att du har ett fjärrlager som innehåller en databasskriptmapp. Mappen innehåller DDL-skript för databasobjekt. Uppgiften är att distribuera en databas på den lokala PC:n. För demonstrationsändamålet kommer jag att använda Visual SVN och Tortoise SVN Repository Browser. Följande bild visar demoförrådet som är värd för databasens skriptmapp.

Det första steget är att skapa en lokal arbetskopia. För att göra det måste du skapa en mapp på den lokala hårddisken och utföra SVN-utcheckningen.

När operationen är klar kommer alla SQL-filer att lagras i den lokala mappen. Nu kan du distribuera databasen. Uppenbarligen är det inte bra att köra alla SQL-filer manuellt en i taget. För att automatisera distributionen kan du skapa en batchfil.

Skapar BATCH-fil

Du måste skapa en batchfil. I den här demon kommer jag att skapa filen sales_demo_build.bat med följande innehåll:

sqlcmd -S "PC_NAME\SQLEXPRESS" -U "sa" -P "sa" -i "D:\sales_demo_build\sales_demo_build.sql" PAUSE

Jag använder SQLCMD-verktyget i batchfilen. För att få mer information om SQLCMD-argument, läs följande artikel:sqlcmd Utility.

Med hjälp av SQLCMD kan vi köra filen sales_demo_build.sql. Det tar alla SQL-filer från arbetsmappen och bygger databasen. Filen sales_demo_build.sql innehåller följande kod:

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

Skriptet innehåller en lista över SQL-filer som ska köras.

:r är ett SQLCMD-kommando som analyserar ytterligare Transact-SQL-satser och sqlcmd-kommandon från filen som anges av till satscachen.

Nu kan vi köra batchfilen:

Nu räcker det! Nu kan vi uppdatera SSMS Object Explorer och börja arbeta med databasen:

Som du kan se är det ett enkelt sätt att distribuera en databas som är lagrad i källkontroll. Det är dock inte det enda sättet att lösa denna uppgift. Vi kommer att prata om alternativa tillvägagångssätt i nästa artiklar.

Användbart verktyg:

dbForge Source Control – kraftfullt SSMS-tillägg för att hantera SQL Server-databasändringar i källkontroll.


  1. Varför kan jag skapa en tabell med PRIMARY KEY på en nullbar kolumn?

  2. MySQL> Tabell finns inte. Men det gör det (eller det borde det)

  3. Hur SQLite Length() fungerar

  4. rails + MySQL på OSX:Biblioteket är inte laddat:libmysqlclient.18.dylib