sync
This commit is contained in:
332
TPDT-268 - ACP in task sequence/12_Broker_Config.sql
Normal file
332
TPDT-268 - ACP in task sequence/12_Broker_Config.sql
Normal file
@@ -0,0 +1,332 @@
|
||||
USE [master]
|
||||
|
||||
/* Create SQL Master key */
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.symmetric_keys WHERE name like '%DatabaseMasterKey%')
|
||||
BEGIN
|
||||
EXEC('CREATE MASTER KEY ENCRYPTION BY PASSWORD = ''$mk''')
|
||||
|
||||
/* Backup SQL Master key */
|
||||
EXEC('BACKUP MASTER KEY TO FILE = ''$bck'' ENCRYPTION BY PASSWORD = ''$mk''')
|
||||
END
|
||||
|
||||
/* Create Atlas Service Broker Certificate */
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.certificates WHERE name = 'TriaPharmSQLCert')
|
||||
BEGIN
|
||||
EXEC('CREATE CERTIFICATE TriaPharmSQLCert FROM FILE = ''D:\SQLDatabaseDump\Certificates\TriaPharmSQLCert.cer'' WITH PRIVATE KEY (FILE = ''D:\SQLDatabaseDump\Certificates\TriaPharmSQLCert.pvk'', DECRYPTION BY PASSWORD = ''$cert'');')
|
||||
END
|
||||
|
||||
/* SQL Broker Endpoint Creation */
|
||||
IF NOT EXISTS ( SELECT 1 FROM sys.tcp_endpoints WHERE name = 'ServiceBrokerEndpoint4022')
|
||||
BEGIN
|
||||
CREATE ENDPOINT [ServiceBrokerEndpoint4022]
|
||||
STATE=STARTED
|
||||
AS TCP (LISTENER_PORT = 4022, LISTENER_IP = ALL)
|
||||
FOR SERVICE_BROKER (MESSAGE_FORWARDING = DISABLED
|
||||
, MESSAGE_FORWARD_SIZE = 10
|
||||
, AUTHENTICATION = CERTIFICATE TriaPharmSQLCert
|
||||
, ENCRYPTION = REQUIRED ALGORITHM AES)
|
||||
|
||||
EXEC('GRANT CONNECT on ENDPOINT::[ServiceBrokerEndpoint4022] TO [PUBLIC]')
|
||||
|
||||
END
|
||||
|
||||
USE [Arizona]
|
||||
|
||||
/*------------------- Declaration des variables --------------------*/
|
||||
DECLARE @cvCurrentOrganizationalUnit int,
|
||||
@subsidiary_id int,
|
||||
@skip tinyint,
|
||||
@servicenamecheck varchar(255),
|
||||
@out_default_value varchar(60),
|
||||
@format varchar(60),
|
||||
@ou varchar(3),
|
||||
@envtype char(1),
|
||||
@envtype2 char(1),
|
||||
@ServiceName varchar(150),
|
||||
@RteAddress varchar(150),
|
||||
@stmt nvarchar(4000)
|
||||
|
||||
|
||||
|
||||
/*------------ Affectation des parametres aux variables ------------*/
|
||||
|
||||
SET @cvCurrentOrganizationalUnit = null
|
||||
SET @subsidiary_id = null
|
||||
SET @ou = ''
|
||||
SET @skip = 0
|
||||
|
||||
SELECT @envtype = CASE WHEN [Type] = 'DEVE' OR [Type] = 'VALI' THEN 'D' ELSE 'P' END FROM master.cfg.InstanceContext
|
||||
SELECT @envtype2 = CASE WHEN [Type] = 'DEVE' THEN 'D' WHEN [Type] = 'VALI' THEN 'T' ELSE 'P' END FROM master.cfg.InstanceContext
|
||||
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------------------------------------------- */
|
||||
/* \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 1 : RETRIEVE FORMAT AND OU CODE /////////////////////////////////////////////////// */
|
||||
/* ------------------------------------------------------------------------------------------------------------------------------------- */
|
||||
|
||||
IF EXISTS(SELECT 1 FROM [master].[cfg].[InstanceContext] WHERE Business = 'TPPHAR')
|
||||
BEGIN
|
||||
/* Get the cvCurrentOrganizationalUnit */
|
||||
EXEC arizona.dbo.sp_bmc_Bmc_Applic_Default
|
||||
@in_job_type = 3,
|
||||
@in_param_int_1 = null,
|
||||
@in_param_int_2 = null,
|
||||
@in_param_varchar_1 = 'cvCurrentOrganizationalUnit',
|
||||
@out_default_value = @out_default_value OUTPUT,
|
||||
@out_param_int_1 = null;
|
||||
|
||||
SELECT @cvCurrentOrganizationalUnit = convert(int,@out_default_value);
|
||||
|
||||
/* Get the subsidiary id and OU code */
|
||||
SELECT @subsidiary_id = ou.OU_subsidiary, @ou = ou.OU_Code
|
||||
FROM arizona.dbo.Organizational_unit ou with (nolock)
|
||||
WHERE ou.Organizational_unit_ID = @cvCurrentOrganizationalUnit;
|
||||
|
||||
/* Get the current format */
|
||||
SELECT @format = UPPER(sub.SUB_code)
|
||||
FROM arizona.dbo.Subsidiary sub with (nolock)
|
||||
WHERE sub.Subsidiary_ID = @subsidiary_id;
|
||||
|
||||
/* Check if we have a value, if not leave this SP */
|
||||
IF @format is null
|
||||
BEGIN
|
||||
PRINT 'ERROR: Format is not found!'
|
||||
SET @skip = 1
|
||||
END
|
||||
|
||||
IF @ou = ''
|
||||
BEGIN
|
||||
PRINT 'ERROR: OU is not found!'
|
||||
SET @skip = 1
|
||||
END
|
||||
|
||||
/* Change the value into a compatible format */
|
||||
IF @format = 'COOP'
|
||||
BEGIN
|
||||
SET @format = 'CVI'
|
||||
END
|
||||
|
||||
IF @format = 'CENT'
|
||||
BEGIN
|
||||
SET @format = 'SUN'
|
||||
END
|
||||
|
||||
IF @format = '000'
|
||||
BEGIN
|
||||
SET @format = 'AAI'
|
||||
END
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------------------------------------------- */
|
||||
/* \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 2 : CREATE SERVICE BROEKR OBJECTS ////////////////////////////////////////////////// */
|
||||
/* ------------------------------------------------------------------------------------------------------------------------------------- */
|
||||
|
||||
IF @skip = 0
|
||||
BEGIN
|
||||
|
||||
/* Activate Service Broker */
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.databases WHERE name = 'Arizona' and is_broker_enabled = 1)
|
||||
BEGIN
|
||||
IF (SERVERPROPERTY('EngineEdition') <> 8)
|
||||
BEGIN
|
||||
ALTER DATABASE [Arizona] SET ENABLE_BROKER
|
||||
END
|
||||
END
|
||||
|
||||
/* Create Atlas Route */
|
||||
IF NOT EXISTS (select 1 from sys.routes where name = '//ATLAS/' + @envtype + 'GALATLAS/Atlas')
|
||||
BEGIN
|
||||
|
||||
SET @ServiceName = '//ATLAS/' + @envtype + 'GALATLAS/AtlasDataCheckRequestService'
|
||||
IF @envtype = 'P'
|
||||
BEGIN
|
||||
SET @RteAddress = 'TCP://atlas.centralinfra.net:4022'
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SET @RteAddress = 'TCP://atlas-dev.centralinfra.net:4022'
|
||||
END
|
||||
|
||||
SET @stmt = N'CREATE ROUTE [//ATLAS/' + @envtype + 'GALATLAS/Atlas] WITH SERVICE_NAME = ''' + @ServiceName + ''', ADDRESS=''' + @RteAddress + ''' ;'
|
||||
EXEC(@stmt)
|
||||
|
||||
END
|
||||
|
||||
/* Create Ceres Route */
|
||||
IF NOT EXISTS (select 1 from sys.routes where name = '//GAIA/' + @envtype2 + 'GALCTP/Ceres')
|
||||
BEGIN
|
||||
|
||||
SET @ServiceName = '//GAIA/' + @envtype2 + 'GALCTP/CeresRequestService'
|
||||
IF @envtype = 'P'
|
||||
BEGIN
|
||||
SET @RteAddress = 'TCP://SWGCMDB01.centralinfra.net:4022'
|
||||
END
|
||||
IF @envtype2 = 'T'
|
||||
BEGIN
|
||||
SET @RteAddress = 'TCP://triafin-test.centralinfra.net:4022'
|
||||
END
|
||||
IF @envtype2 = 'D'
|
||||
BEGIN
|
||||
SET @RteAddress = 'TCP://triafin-integration.centralinfra.net:4022'
|
||||
END
|
||||
|
||||
SET @stmt = N'CREATE ROUTE [//GAIA/' + @envtype2 + 'GALCTP/Ceres] WITH SERVICE_NAME = ''' + @ServiceName + ''', ADDRESS=''' + @RteAddress + ''' ;'
|
||||
EXEC(@stmt)
|
||||
|
||||
END
|
||||
|
||||
/* Drop service ATLAS */
|
||||
SELECT @servicenamecheck = name FROM sys.services WHERE name like '%AtlasDataCheckProcessingService%'
|
||||
|
||||
IF EXISTS (SELECT 1 from sys.services WHERE name = @servicenamecheck)
|
||||
BEGIN
|
||||
EXEC('DROP SERVICE [' + @servicenamecheck +']')
|
||||
END
|
||||
|
||||
/* Drop contract ATLAS */
|
||||
IF EXISTS (SELECT 1 from sys.service_contracts WHERE name = 'AtlasDataCheckContract')
|
||||
BEGIN
|
||||
DROP CONTRACT AtlasDataCheckContract
|
||||
END
|
||||
|
||||
/* DROP AND CREATE MESSAGES ATLAS */
|
||||
IF EXISTS (SELECT 1 from sys.service_message_types WHERE name = 'AtlasDataCheckSenderMessageType')
|
||||
BEGIN
|
||||
DROP MESSAGE TYPE [AtlasDataCheckSenderMessageType]
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT 1 from sys.service_message_types WHERE name = 'AtlasDataCheckSenderMessageType')
|
||||
BEGIN
|
||||
CREATE MESSAGE TYPE AtlasDataCheckSenderMessageType validation=well_formed_xml
|
||||
END
|
||||
|
||||
IF EXISTS (SELECT 1 from sys.service_message_types WHERE name = 'AtlasDataCheckReceiverMessageType')
|
||||
BEGIN
|
||||
DROP MESSAGE TYPE [AtlasDataCheckReceiverMessageType]
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT 1 from sys.service_message_types WHERE name = 'AtlasDataCheckReceiverMessageType')
|
||||
BEGIN
|
||||
CREATE MESSAGE TYPE AtlasDataCheckReceiverMessageType validation=well_formed_xml
|
||||
END
|
||||
|
||||
/* CREATE CONTRACT ATLAS */
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.service_contracts WHERE name = 'AtlasDataCheckContract')
|
||||
BEGIN
|
||||
CREATE CONTRACT AtlasDataCheckContract
|
||||
(
|
||||
AtlasDataCheckSenderMessageType SENT BY INITIATOR,
|
||||
AtlasDataCheckReceiverMessageType SENT BY TARGET
|
||||
)
|
||||
END
|
||||
|
||||
/* DROP AND CREATE QUEUE ATLAS */
|
||||
IF EXISTS (SELECT 1 from sys.service_queues WHERE name = 'AtlasDataCheckProcessingQueue')
|
||||
BEGIN
|
||||
DROP QUEUE AtlasDataCheckProcessingQueue
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT 1 from sys.service_queues WHERE name = 'AtlasDataCheckProcessingQueue')
|
||||
BEGIN
|
||||
CREATE QUEUE AtlasDataCheckProcessingQueue
|
||||
WITH STATUS = ON ,
|
||||
ACTIVATION (
|
||||
STATUS = ON ,
|
||||
PROCEDURE_NAME = [atl].[ProcessCheckData] ,
|
||||
MAX_QUEUE_READERS = 10 ,
|
||||
EXECUTE AS SELF
|
||||
)
|
||||
END
|
||||
|
||||
/* CREATE SERVICE ATLAS */
|
||||
SET @servicenamecheck = '//' + @format+@ou + 'APS/APSSQL/AtlasDataCheckProcessingService'
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.service_contracts WHERE name = @servicenamecheck)
|
||||
BEGIN
|
||||
EXEC('CREATE SERVICE [' + @servicenamecheck + '] ON QUEUE AtlasDataCheckProcessingQueue (AtlasDataCheckContract)')
|
||||
END
|
||||
|
||||
/* SET SECURITY ATLAS */
|
||||
EXEC('GRANT SEND on service::[' + @servicenamecheck + '] TO PUBLIC')
|
||||
|
||||
|
||||
|
||||
|
||||
/* Drop service CERES */
|
||||
SELECT @servicenamecheck = name FROM sys.services WHERE name like '%CeresProcessingService%'
|
||||
|
||||
IF EXISTS (SELECT 1 from sys.services WHERE name = @servicenamecheck)
|
||||
BEGIN
|
||||
EXEC('DROP SERVICE [' + @servicenamecheck +']')
|
||||
END
|
||||
|
||||
/* Drop contract CERES */
|
||||
IF EXISTS (SELECT 1 from sys.service_contracts WHERE name = 'CeresContract')
|
||||
BEGIN
|
||||
DROP CONTRACT CeresContract
|
||||
END
|
||||
|
||||
/* DROP AND CREATE MESSAGES CERES */
|
||||
IF EXISTS (SELECT 1 from sys.service_message_types WHERE name = 'CeresSenderMessageType')
|
||||
BEGIN
|
||||
DROP MESSAGE TYPE [CeresSenderMessageType]
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT 1 from sys.service_message_types WHERE name = 'CeresSenderMessageType')
|
||||
BEGIN
|
||||
CREATE MESSAGE TYPE CeresSenderMessageType validation=well_formed_xml
|
||||
END
|
||||
|
||||
IF EXISTS (SELECT 1 from sys.service_message_types WHERE name = 'CeresReceiverMessageType')
|
||||
BEGIN
|
||||
DROP MESSAGE TYPE [CeresReceiverMessageType]
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT 1 from sys.service_message_types WHERE name = 'CeresReceiverMessageType')
|
||||
BEGIN
|
||||
CREATE MESSAGE TYPE CeresReceiverMessageType validation=well_formed_xml
|
||||
END
|
||||
|
||||
/* CREATE CONTRACT CERES */
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.service_contracts WHERE name = 'CeresContract')
|
||||
BEGIN
|
||||
CREATE CONTRACT CeresContract
|
||||
(
|
||||
CeresSenderMessageType SENT BY INITIATOR,
|
||||
CeresReceiverMessageType SENT BY TARGET
|
||||
)
|
||||
END
|
||||
|
||||
/* DROP AND CREATE QUEUE CERES */
|
||||
IF EXISTS (SELECT 1 from sys.service_queues WHERE name = 'CeresProcessingQueue')
|
||||
BEGIN
|
||||
DROP QUEUE CeresProcessingQueue
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT 1 from sys.service_queues WHERE name = 'CeresProcessingQueue')
|
||||
BEGIN
|
||||
CREATE QUEUE CeresProcessingQueue
|
||||
WITH STATUS = ON ,
|
||||
ACTIVATION (
|
||||
STATUS = ON ,
|
||||
PROCEDURE_NAME = [crs].[ProcessRequest] ,
|
||||
MAX_QUEUE_READERS = 10 ,
|
||||
EXECUTE AS SELF
|
||||
)
|
||||
END
|
||||
|
||||
/* CREATE SERVICE CERES */
|
||||
SET @servicenamecheck = '//' + @format+@ou + 'APS/APSSQL/CeresProcessingService'
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.service_contracts WHERE name = @servicenamecheck)
|
||||
BEGIN
|
||||
EXEC('CREATE SERVICE [' + @servicenamecheck + '] ON QUEUE CeresProcessingQueue (CeresContract)')
|
||||
END
|
||||
|
||||
/* SET SECURITY ATLAS */
|
||||
EXEC('GRANT SEND on service::[' + @servicenamecheck + '] TO PUBLIC')
|
||||
|
||||
END
|
||||
END
|
||||
Reference in New Issue
Block a user