333 lines
11 KiB
Transact-SQL
333 lines
11 KiB
Transact-SQL
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
|