Repeatable SQL Deploy Script

Maak per omgeving een command (cmd) file aan. Noem command file Test, Accept resp. Productie. Inhoud van de command file is als volgt:
RunDbScripts [Database Server] [Database]

Command file RunDbScripts ziet er bijvoorbeeld als volgt uit:

@cls
@ECHO Param Server: %1
@ECHO Param Database: %2

@rem Added the columns MessageType, BusinessEntityID and BusinessTransactionID
sqlcmd -E -S %1 -d %2 -i “tblFault_changes.sql” -v Db=%2 >> Log.txt
sqlcmd -E -S %1 -d %2 -i “table_SolutionGroup.sql” -v Db=%2 >> Log.txt
sqlcmd -E -S %1 -d %2 -i “procedure_select_FailureCategories.sql” -v Db=%2 >> Log.txt
sqlcmd -E -S %1 -d %2 -i “procedure_insert_fault.sql” -v Db=%2 >> Log.txt
sqlcmd -E -S %1 -d %2 -i “vw_AgeOldestEMPMessage.sql” -v Db=%2 >> Log.txt
sqlcmd -E -S %1 -d %2 -i “Esb_Grants.sql” -v Db=%2 >> Log.txt

Elk aangeroepen SQL script begint met een parameter $DB. Deze parameter wordt namelijk meegegeven bij de aanroep van elk SQL script. Je kunt vervolgens het USE statement op correcte wijze zetten:
USE [$(Db)]
GO

Een change script voor een database tabel is herhaalbaar door de volgende opzet:
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ‘Fault’ AND TABLE_SCHEMA=’dbo’
AND COLUMN_NAME IN (‘AssignedTo’))
BEGIN
ALTER TABLE dbo.Fault ADD
AssignedTo bigint NULL

Tabellen en Stored Procedures moeten worden toegevoegd via een Drop/Create script.

Tot slot moet je een script DB_Grants toevoegen om rechten toe te kennen aan de opnieuw toegevoegde tabellen en stored procedures:

GRANT EXECUTE ON dbo.usp_update_ResubmitStatus TO [ESBPortalAdmin]
GO
GRANT EXECUTE ON dbo.usp_update_ResubmitStatus TO [ESBPortal]
GO

GRANT SELECT ON [dbo].[Fault] TO [ESBPortalAdmin]
GO
GRANT SELECT ON [dbo].[Fault] TO [ESBPortal]
GO

Leave a Reply

Your email address will not be published. Required fields are marked *