sql >> Databáze >  >> RDS >> Database

Nasazení databáze z ovládání zdroje

V těchto dnech začínají vývojové týmy nové projekty výběrem systému správy verzí. Existuje mnoho výhod systémů řízení zdrojů při koordinaci úsilí vývojového týmu. Zajišťuje kompletní auditní záznam všech změn v kódu a umožňuje týmu reprodukovat jakoukoli konkrétní revizi nebo sestavení. Spolu s programovacím kódem mohou a měly by být databáze umístěny pod kontrolu zdroje. V tomto článku se podíváme na to, jak nasadit databázi, která je ve vzdáleném úložišti.

Předpokládejme, že máte vzdálené úložiště, které obsahuje složku skriptů databáze. Složka obsahuje skripty DDL pro databázové objekty. Úkolem je nasadit databázi na lokální PC. Pro demonstrační účely použiji Visual SVN a Tortoise SVN Repository Browser. Následující obrázek ukazuje ukázkové úložiště, které je hostitelem složky skriptů databáze.

Prvním krokem je vytvoření místní pracovní kopie. Chcete-li tak učinit, musíte vytvořit složku na místním pevném disku a provést operaci nákupu SVN.

Po dokončení operace budou všechny soubory SQL uloženy v místní složce. Nyní můžete nasadit databázi. Je zřejmé, že není dobré spouštět ručně všechny soubory SQL jeden po druhém. Pro automatizaci nasazení můžete vytvořit dávkový soubor.

Vytvoření BATCH souboru

Musíte vytvořit dávkový soubor. V tomto demu vytvořím soubor sales_demo_build.bat s následujícím obsahem:

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

V dávkovém souboru používám obslužný program SQLCMD. Chcete-li získat další informace o argumentech SQLCMD, přečtěte si následující článek:sqlcmd Utility.

Pomocí SQLCMD můžeme spustit soubor sales_demo_build.sql. Vezme všechny soubory SQL z pracovní složky a vytvoří databázi. Soubor sales_demo_build.sql obsahuje následující kód:

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

Skript obsahuje seznam souborů SQL, které mají být provedeny.

:r je příkaz SQLCMD, který analyzuje další příkazy Transact-SQL a příkazy sqlcmd ze souboru určeného pomocí do mezipaměti příkazů.

Nyní můžeme spustit dávkový soubor:

To je ono! Nyní můžeme obnovit SSMS Object Explorer a začít pracovat s databází:

Jak vidíte, je to jednoduchý způsob nasazení databáze, která je uložena v řízení zdroje. Není to však jediný způsob, jak tento úkol vyřešit. O alternativních přístupech si povíme v dalších článcích.

Užitečný nástroj:

dbForge Source Control – výkonný doplněk SSMS pro správu změn databáze SQL Server v ovládání zdroje.


  1. sp_add_schedule vs sp_add_jobschedule v SQL Server:Jaký je rozdíl?

  2. Generování časových řad mezi dvěma daty v PostgreSQL

  3. jak vložit datum a čas do oracle?

  4. Více omezení v tabulce:Jak získat všechna porušení?