Database
 sql >> Database >  >> RDS >> Database

Distribuzione del database dal controllo del codice sorgente

In questi giorni, i team di sviluppo iniziano nuovi progetti scegliendo un sistema di controllo della versione. Ci sono molti vantaggi dei sistemi di controllo del codice sorgente nel coordinare gli sforzi del team di sviluppo. Garantisce un audit trail completo di tutte le modifiche al codice e consente al team di riprodurre qualsiasi revisione o build specifica. Insieme al codice di programmazione, i database possono e devono essere posti sotto il controllo del codice sorgente. In questo articolo, daremo un'occhiata a come distribuire un database che si trova nel repository remoto.

Si supponga di disporre di un repository remoto che contiene una cartella di script del database. La cartella contiene gli script DDL per gli oggetti del database. Il compito è distribuire un database sul PC locale. A scopo dimostrativo, utilizzerò Visual SVN e Tortoise SVN Repository Browser. L'immagine seguente mostra il repository demo che ospita la cartella degli script del database.

Il primo passaggio consiste nel creare una copia di lavoro locale. Per fare ciò, è necessario creare una cartella sul disco rigido locale ed eseguire l'operazione di checkout SVN.

Una volta completata l'operazione, tutti i file SQL verranno archiviati nella cartella locale. Ora puoi distribuire il database. Ovviamente, non è una buona pratica eseguire manualmente tutti i file SQL uno per uno. Per automatizzare la distribuzione puoi creare un file batch.

Creazione del file BATCH

Devi creare un file batch. In questa demo creerò il file sales_demo_build.bat con il seguente contenuto:

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

Uso l'utilità SQLCMD nel file batch. Per ottenere ulteriori informazioni sugli argomenti SQLCMD, leggere il seguente articolo:Utilità sqlcmd.

Con l'aiuto di SQLCMD, possiamo eseguire il file sales_demo_build.sql. Prenderà tutti i file SQL dalla cartella di lavoro e costruirà il database. Il file sales_demo_build.sql contiene il codice seguente:

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

Lo script contiene un elenco di file SQL da eseguire.

:r è un comando SQLCMD che analizza istruzioni Transact-SQL aggiuntive e comandi sqlcmd dal file specificato da nella cache delle istruzioni.

Ora possiamo eseguire il file batch:

Questo è tutto! Ora possiamo aggiornare SSMS Object Explorer e iniziare a lavorare con il database:

Come puoi vedere, è un modo semplice per distribuire un database archiviato nel controllo del codice sorgente. Tuttavia, non è l'unico modo per risolvere questo compito. Parleremo di approcci alternativi nei prossimi articoli.

Strumento utile:

dbForge Source Control:potente componente aggiuntivo SSMS per la gestione delle modifiche al database di SQL Server nel controllo del codice sorgente.