Database
 sql >> база данни >  >> RDS >> Database

Разгръщане на база данни от Source Control

Тези дни екипите за разработка започват нови проекти от избора на система за контрол на версиите. Има много предимства на системите за контрол на източника при координирането на усилията на екипа за разработка. Той осигурява пълна одитна пътека на всички промени в кода и позволява на екипа да възпроизведе всяка конкретна ревизия или компилация. Заедно с програмния код, базите данни могат и трябва да бъдат поставени под контрол на източника. В тази статия ще разгледаме как да разположим база данни, която е в отдалеченото хранилище.

Да приемем, че имате отдалечено хранилище, което съдържа папка със скриптове на база данни. Папката съдържа 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 в контрола на източника.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Конфигуриране на разрешения за ScaleGrid в AWS с помощта на шаблон за IAM политика

  2. Обща грешка:Несъответствие на версията на ОС

  3. Използване на Microsoft DiskSpd за тестване на вашата подсистема за съхранение

  4. Трансформирайте ODBC данни в CloverDX

  5. Сравняване на SQL, конструктори на заявки и ORM