Tegenwoordig starten ontwikkelteams nieuwe projecten vanaf het kiezen van een versiebeheersysteem. Er zijn veel voordelen van broncontrolesystemen bij het coördineren van de inspanningen van het ontwikkelteam. Het zorgt voor een compleet auditspoor van alle wijzigingen in de code en stelt het team in staat om elke specifieke revisie of build te reproduceren. Samen met de programmeercode kunnen en moeten databases onder broncontrole worden geplaatst. In dit artikel zullen we bekijken hoe we een database kunnen implementeren die zich in de externe repository bevindt.
Stel dat u een externe repository hebt die een databasescriptmap bevat. De map bevat DDL-scripts voor databaseobjecten. De taak is om een database op de lokale pc te implementeren. Voor de demonstratie zal ik Visual SVN en Tortoise SVN Repository Browser gebruiken. De volgende afbeelding toont de demo-repository die de databasescriptmap host.
De eerste stap is het maken van een lokale werkkopie. Om dit te doen, moet u een map op de lokale harde schijf maken en de SVN-uitcheckbewerking uitvoeren.
Zodra de bewerking is voltooid, worden alle SQL-bestanden opgeslagen in de lokale map. Nu kunt u de database implementeren. Het is duidelijk geen goede gewoonte om alle SQL-bestanden één voor één handmatig uit te voeren. Om de implementatie te automatiseren, kunt u een batchbestand maken.
BATCH-bestand maken
U moet een batchbestand maken. In deze demo zal ik het bestand sales_demo_build.bat maken met de volgende inhoud:
sqlcmd -S "PC_NAME\SQLEXPRESS" -U "sa" -P "sa" -i "D:\sales_demo_build\sales_demo_build.sql" PAUSE
Ik gebruik het hulpprogramma SQLCMD in het batchbestand. Lees het volgende artikel voor meer informatie over SQLCMD-argumenten:sqlcmd Utility.
Met behulp van SQLCMD kunnen we het bestand sales_demo_build.sql uitvoeren. Het zal alle SQL-bestanden uit de werkmap halen en de database bouwen. Het bestand sales_demo_build.sql bevat de volgende 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
Het script bevat een lijst met uit te voeren SQL-bestanden.
:r is een SQLCMD-opdracht die aanvullende Transact-SQL-instructies en sqlcmd-opdrachten uit het bestand dat is opgegeven door in de instructiecache parseert.
Nu kunnen we het batchbestand uitvoeren:
Dat is het! Nu kunnen we de SSMS Object Explorer vernieuwen en aan de slag gaan met de database:
Zoals u kunt zien, is het een eenvoudige manier om een database te implementeren die is opgeslagen in broncodebeheer. Het is echter niet de enige manier om deze taak op te lossen. In de volgende artikelen zullen we het hebben over alternatieve benaderingen.
Handig hulpmiddel:
dbForge Source Control – krachtige SSMS-invoegtoepassing voor het beheren van SQL Server-databasewijzigingen in bronbeheer.