Тези дни екипите за разработка започват нови проекти от избора на система за контрол на версиите. Има много предимства на системите за контрол на източника при координирането на усилията на екипа за разработка. Той осигурява пълна одитна пътека на всички промени в кода и позволява на екипа да възпроизведе всяка конкретна ревизия или компилация. Заедно с програмния код, базите данни могат и трябва да бъдат поставени под контрол на източника. В тази статия ще разгледаме как да разположим база данни, която е в отдалеченото хранилище.
Да приемем, че имате отдалечено хранилище, което съдържа папка със скриптове на база данни. Папката съдържа DDL скриптове за обекти на база данни. Задачата е да се разгърне база данни на локалния компютър. За демонстрационна цел ще използвам Visual SVN и Tortoise SVN Repository Browser. Следната снимка демонстрира демонстрационното хранилище, което хоства папката със скриптове на базата данни.
Първата стъпка е да създадете локално работно копие. За да направите това, трябва да създадете папка на локалния твърд диск и да извършите операцията за проверка на SVN.
След като операцията приключи, всички SQL файлове ще бъдат съхранени в локалната папка. Сега можете да разположите базата данни. Очевидно не е добра практика да се изпълняват ръчно всички SQL файлове един по един. За да автоматизирате внедряването, можете да създадете пакетен файл.
Създаване на BATCH файл
Трябва да създадете пакетен файл. В тази демонстрация ще създам файла sales_demo_build.bat със следното съдържание:
sqlcmd -S "PC_NAME\SQLEXPRESS" -U "sa" -P "sa" -i "D:\sales_demo_build\sales_demo_build.sql" PAUSE
Използвам помощната програма SQLCMD в пакетния файл. За да получите повече информация относно аргументите на SQLCMD, прочетете следната статия:sqlcmd Помощна програма.
С помощта на SQLCMD можем да изпълним файла sales_demo_build.sql. Той ще вземе всички SQL файлове от работната папка и ще изгради базата данни. Файлът sales_demo_build.sql съдържа следния код:
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
Скриптът съдържа списък с SQL файлове, които трябва да бъдат изпълнени.
:r е SQLCMD команда, която анализира допълнителни Transact-SQL оператори и sqlcmd команди от файла, посочен от, в кеша на изразите.
Сега можем да стартираме пакетния файл:
Това е! Сега можем да обновим SSMS Object Explorer и да започнем да работим с базата данни:
Както можете да видите, това е прост начин за разгръщане на база данни, която се съхранява в контрола на източника. Това обаче не е единственият начин за решаване на тази задача. Ще говорим за алтернативни подходи в следващите статии.
Полезен инструмент:
dbForge Source Control – мощна SSMS добавка за управление на промените в базата данни на SQL Server в контрола на източника.