added files from swmgmt03
This commit is contained in:
346
DELPHIX - schema changes.sql
Normal file
346
DELPHIX - schema changes.sql
Normal file
@@ -0,0 +1,346 @@
|
||||
USE [HCITools];
|
||||
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.[schemas] s WHERE s.[name]='delphix')
|
||||
BEGIN
|
||||
EXEC('CREATE SCHEMA [delphix]');
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID('delphix.delphix_schema_changes') IS NOT NULL
|
||||
BEGIN
|
||||
DROP PROCEDURE delphix.delphix_schema_changes;
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID('dbo.delphix_schema_changes') IS NOT NULL
|
||||
BEGIN
|
||||
DROP PROCEDURE dbo.delphix_schema_changes;
|
||||
END
|
||||
|
||||
|
||||
GO
|
||||
/*
|
||||
OC-945
|
||||
|
||||
This procedure is used by Delphix to alter the schema in the databases that must be masked.
|
||||
It will add new columns to existing tables, that will be used by the masking engine.
|
||||
|
||||
The following fields are added:
|
||||
int arizona.dbo.addresse
|
||||
TT_
|
||||
*/
|
||||
CREATE PROCEDURE delphix.delphix_schema_changes
|
||||
@removeSchemaChanges BIT = 0
|
||||
AS
|
||||
BEGIN
|
||||
SET XACT_ABORT ON;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @tblAlter TABLE(dbName VARCHAR(50) NOT NULL, queryAlterTxt NVARCHAR(MAX) NOT NULL, queryUpdateTxt NVARCHAR(MAX) NOT NULL);
|
||||
|
||||
IF @removeSchemaChanges = 1
|
||||
BEGIN
|
||||
INSERT INTO @tblAlter ([dbName]
|
||||
,[queryAlterTxt]
|
||||
,[queryUpdateTxt])
|
||||
VALUES(
|
||||
'arizona'
|
||||
,'
|
||||
IF EXISTS(
|
||||
SELECT 1
|
||||
FROM [INFORMATION_SCHEMA].[COLUMNS] c
|
||||
WHERE c.[TABLE_NAME]=''address''
|
||||
AND c.[TABLE_SCHEMA]=''dbo''
|
||||
AND c.[COLUMN_NAME]=''TT_masking''
|
||||
)
|
||||
BEGIN
|
||||
IF (OBJECT_ID(''DF_TT_masking'') IS NOT NULL)
|
||||
BEGIN
|
||||
ALTER TABLE dbo.[Address] DROP CONSTRAINT [DF_TT_masking];
|
||||
END
|
||||
ALTER TABLE dbo.[Address] DROP COLUMN [TT_masking];
|
||||
END
|
||||
'
|
||||
,''
|
||||
)
|
||||
,(
|
||||
'arizona_delphix'
|
||||
,'
|
||||
IF EXISTS(
|
||||
SELECT 1
|
||||
FROM [INFORMATION_SCHEMA].[COLUMNS] c
|
||||
WHERE c.[TABLE_NAME]=''address''
|
||||
AND c.[TABLE_SCHEMA]=''dbo''
|
||||
AND c.[COLUMN_NAME]=''TT_masking''
|
||||
)
|
||||
BEGIN
|
||||
IF (OBJECT_ID(''DF_TT_masking'') IS NOT NULL)
|
||||
BEGIN
|
||||
ALTER TABLE dbo.[Address] DROP CONSTRAINT [DF_TT_masking];
|
||||
END
|
||||
|
||||
ALTER TABLE dbo.[Address] DROP COLUMN [TT_masking];
|
||||
END
|
||||
'
|
||||
,''
|
||||
);
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
INSERT INTO @tblAlter ([dbName]
|
||||
,[queryAlterTxt]
|
||||
,[queryUpdateTxt])
|
||||
VALUES(
|
||||
'arizona'
|
||||
,'
|
||||
IF NOT EXISTS(
|
||||
SELECT 1
|
||||
FROM [INFORMATION_SCHEMA].[COLUMNS] c
|
||||
WHERE c.[TABLE_NAME]=''address''
|
||||
AND c.[TABLE_SCHEMA]=''dbo''
|
||||
AND c.[COLUMN_NAME]=''TT_masking''
|
||||
)
|
||||
BEGIN
|
||||
ALTER TABLE dbo.[Address] ADD TT_masking VARCHAR(50) NOT NULL CONSTRAINT DF_TT_masking DEFAULT ''MASK'';
|
||||
END
|
||||
'
|
||||
,'
|
||||
--set everything to be masked
|
||||
UPDATE ad
|
||||
SET ad.TT_masking = ''MASK''
|
||||
FROM Arizona.dbo.Address ad
|
||||
WHERE ad.TT_masking <> ''MASK'';
|
||||
|
||||
--exclude from masking what we want to keep
|
||||
UPDATE ad
|
||||
SET ad.TT_masking = ''PERSIST''
|
||||
FROM Arizona.dbo.Address ad
|
||||
JOIN Arizona.dbo.Customer cst
|
||||
ON [cst].[CUST_address] = [ad].[Address_ID]
|
||||
LEFT JOIN Arizona.dbo.[Subsidiary] sub
|
||||
ON [cst].[CUST_subsidiary] = [sub].[Subsidiary_ID]
|
||||
WHERE [sub].[Subsidiary_ID] IS NOT NULL
|
||||
AND ( [ad].[AD_last_name] LIKE ''TEST %''
|
||||
OR [ad].[AD_name] LIKE ''TEST %''
|
||||
OR [ad].[AD_last_name] LIKE ''Assura%''
|
||||
OR [ad].[AD_last_name] LIKE ''PRESCRIPTION%''
|
||||
OR [ad].[AD_last_name] LIKE ''RETETE%''
|
||||
OR [ad].[AD_last_name] LIKE ''USER%''
|
||||
OR [ad].[AD_last_name] LIKE ''ONBOARD%''
|
||||
OR [ad].[AD_last_name] LIKE ''SUSPICIOUS%''
|
||||
OR [ad].[AD_last_name] LIKE ''DOE''
|
||||
OR [ad].[AD_last_name] LIKE ''GIALLO%''
|
||||
OR [ad].[AD_last_name] LIKE ''TOLKIEN%''
|
||||
OR [ad].[AD_last_name] LIKE ''DEMO %''
|
||||
OR [ad].[AD_last_name] LIKE ''DOCUMEDIS%''
|
||||
OR [ad].[AD_last_name] = ''DEMO''
|
||||
OR [ad].[AD_last_name] LIKE ''OMNICHANNEL%''
|
||||
OR [ad].[AD_last_name] LIKE ''LASTNAME%''
|
||||
OR [ad].[AD_last_name] LIKE ''MeiXin%''
|
||||
OR [ad].[AD_last_name] LIKE ''DIPLOMATE%''
|
||||
OR [ad].[AD_last_name] LIKE ''NO %''
|
||||
OR [ad].[AD_last_name] LIKE ''ONLY%''
|
||||
OR [ad].[AD_last_name] LIKE ''RDL%''
|
||||
OR [ad].[AD_last_name] LIKE ''USER%''
|
||||
OR [ad].[AD_last_name] LIKE ''GALEXIS%''
|
||||
OR [ad].[AD_last_name] LIKE ''APOS%''
|
||||
OR [ad].[AD_last_name] LIKE ''APOSANDMAGENTO%''
|
||||
OR [ad].[AD_last_name] LIKE ''Activate''
|
||||
OR [ad].[AD_last_name] LIKE ''Sunstore''
|
||||
OR [ad].[AD_last_name] LIKE ''Coopvitality''
|
||||
OR [ad].[AD_last_name] LIKE ''Ama Plus Sun''
|
||||
OR [ad].[AD_last_name] LIKE ''Ama Plus Cvi''
|
||||
OR [ad].[AD_last_name] LIKE ''Sun Plus Cvi''
|
||||
OR [ad].[AD_last_name] LIKE ''Ama Sun Cvi''
|
||||
OR [ad].[AD_last_name] LIKE ''test%[0-9]%''
|
||||
OR [ad].[AD_first_name] LIKE ''test%[0-9]%''
|
||||
OR [ad].[AD_name] LIKE ''%SUNCLUB%''
|
||||
OR [ad].[AD_name] LIKE ''%QUALITY%''
|
||||
OR [ad].[AD_name] LIKE ''%STARCARD%''
|
||||
OR [ad].[AD_name] LIKE ''%CLIENT%''
|
||||
OR [ad].[AD_name] LIKE ''%MAGENTO%''
|
||||
OR [ad].[AD_name] LIKE ''%RENOUVELLEMENT%''
|
||||
OR [ad].[AD_name] LIKE ''%Mitarbeiter%''
|
||||
OR [ad].[AD_name] LIKE ''% DEV %''
|
||||
OR [ad].[AD_name] LIKE ''CERN Service%''
|
||||
OR [ad].[AD_name] LIKE ''BALEXERT CENTRE%''
|
||||
OR [ad].[AD_name] LIKE ''G.H.O.L.%''
|
||||
OR [ad].[AD_first_name] LIKE ''Test %''
|
||||
OR [ad].[AD_first_name] = ''Test''
|
||||
OR [ad].[AD_first_name] LIKE ''ONLYAPOS%''
|
||||
OR [ad].[AD_first_name] LIKE ''In APOS%''
|
||||
OR [ad].[AD_last_name] = ''DEMO''
|
||||
OR (
|
||||
[ad].[Address_ID] < 1500000000
|
||||
AND NOT EXISTS (SELECT 3 FROM [dbo].[Employee] WHERE EM_address = ad.Address_ID)
|
||||
AND NOT EXISTS (SELECT 3 FROM [dbo].[Customer] WHERE CUST_address = ad.Address_ID)
|
||||
)
|
||||
)
|
||||
AND [ad].[TT_masking] <> ''PERSIST''
|
||||
|
||||
UPDATE ad
|
||||
SET [ad].[TT_masking] = ''PERSIST''
|
||||
FROM Arizona.dbo.PH_prescriber ph
|
||||
INNER JOIN Arizona.dbo.Address ad
|
||||
ON [ad].[Address_ID] = [ph].[PHPR_address]
|
||||
WHERE [ph].[PHPR_deactivation_date] IS NULL
|
||||
AND [ad].[TT_masking] <> ''PERSIST'';
|
||||
'
|
||||
)
|
||||
,(
|
||||
'arizona_delphix'
|
||||
,'
|
||||
IF NOT EXISTS(
|
||||
SELECT 1
|
||||
FROM [INFORMATION_SCHEMA].[COLUMNS] c
|
||||
WHERE c.[TABLE_NAME]=''address''
|
||||
AND c.[TABLE_SCHEMA]=''dbo''
|
||||
AND c.[COLUMN_NAME]=''TT_masking''
|
||||
)
|
||||
BEGIN
|
||||
ALTER TABLE dbo.[Address] ADD TT_masking VARCHAR(50) NOT NULL CONSTRAINT DF_TT_masking DEFAULT ''MASK'';
|
||||
END
|
||||
'
|
||||
,'
|
||||
--set everything to be masked
|
||||
UPDATE ad
|
||||
SET ad.TT_masking = ''MASK''
|
||||
FROM Arizona.dbo.Address ad
|
||||
WHERE ad.TT_masking <> ''MASK'';
|
||||
|
||||
--exclude from masking what we want to keep
|
||||
UPDATE ad
|
||||
SET ad.TT_masking = ''PERSIST''
|
||||
FROM Arizona.dbo.Address ad
|
||||
JOIN Arizona.dbo.Customer cst
|
||||
ON [cst].[CUST_address] = [ad].[Address_ID]
|
||||
LEFT JOIN Arizona.dbo.[Subsidiary] sub
|
||||
ON [cst].[CUST_subsidiary] = [sub].[Subsidiary_ID]
|
||||
WHERE [sub].[Subsidiary_ID] IS NOT NULL
|
||||
AND ( [ad].[AD_last_name] LIKE ''TEST %''
|
||||
OR [ad].[AD_name] LIKE ''TEST %''
|
||||
OR [ad].[AD_last_name] LIKE ''Assura%''
|
||||
OR [ad].[AD_last_name] LIKE ''PRESCRIPTION%''
|
||||
OR [ad].[AD_last_name] LIKE ''RETETE%''
|
||||
OR [ad].[AD_last_name] LIKE ''USER%''
|
||||
OR [ad].[AD_last_name] LIKE ''ONBOARD%''
|
||||
OR [ad].[AD_last_name] LIKE ''SUSPICIOUS%''
|
||||
OR [ad].[AD_last_name] LIKE ''DOE''
|
||||
OR [ad].[AD_last_name] LIKE ''GIALLO%''
|
||||
OR [ad].[AD_last_name] LIKE ''TOLKIEN%''
|
||||
OR [ad].[AD_last_name] LIKE ''DEMO %''
|
||||
OR [ad].[AD_last_name] LIKE ''DOCUMEDIS%''
|
||||
OR [ad].[AD_last_name] = ''DEMO''
|
||||
OR [ad].[AD_last_name] LIKE ''OMNICHANNEL%''
|
||||
OR [ad].[AD_last_name] LIKE ''LASTNAME%''
|
||||
OR [ad].[AD_last_name] LIKE ''MeiXin%''
|
||||
OR [ad].[AD_last_name] LIKE ''DIPLOMATE%''
|
||||
OR [ad].[AD_last_name] LIKE ''NO %''
|
||||
OR [ad].[AD_last_name] LIKE ''ONLY%''
|
||||
OR [ad].[AD_last_name] LIKE ''RDL%''
|
||||
OR [ad].[AD_last_name] LIKE ''USER%''
|
||||
OR [ad].[AD_last_name] LIKE ''GALEXIS%''
|
||||
OR [ad].[AD_last_name] LIKE ''APOS%''
|
||||
OR [ad].[AD_last_name] LIKE ''APOSANDMAGENTO%''
|
||||
OR [ad].[AD_last_name] LIKE ''Activate''
|
||||
OR [ad].[AD_last_name] LIKE ''Sunstore''
|
||||
OR [ad].[AD_last_name] LIKE ''Coopvitality''
|
||||
OR [ad].[AD_last_name] LIKE ''Ama Plus Sun''
|
||||
OR [ad].[AD_last_name] LIKE ''Ama Plus Cvi''
|
||||
OR [ad].[AD_last_name] LIKE ''Sun Plus Cvi''
|
||||
OR [ad].[AD_last_name] LIKE ''Ama Sun Cvi''
|
||||
OR [ad].[AD_last_name] LIKE ''test%[0-9]%''
|
||||
OR [ad].[AD_first_name] LIKE ''test%[0-9]%''
|
||||
OR [ad].[AD_name] LIKE ''%SUNCLUB%''
|
||||
OR [ad].[AD_name] LIKE ''%QUALITY%''
|
||||
OR [ad].[AD_name] LIKE ''%STARCARD%''
|
||||
OR [ad].[AD_name] LIKE ''%CLIENT%''
|
||||
OR [ad].[AD_name] LIKE ''%MAGENTO%''
|
||||
OR [ad].[AD_name] LIKE ''%RENOUVELLEMENT%''
|
||||
OR [ad].[AD_name] LIKE ''%Mitarbeiter%''
|
||||
OR [ad].[AD_name] LIKE ''% DEV %''
|
||||
OR [ad].[AD_name] LIKE ''CERN Service%''
|
||||
OR [ad].[AD_name] LIKE ''BALEXERT CENTRE%''
|
||||
OR [ad].[AD_name] LIKE ''G.H.O.L.%''
|
||||
OR [ad].[AD_first_name] LIKE ''Test %''
|
||||
OR [ad].[AD_first_name] = ''Test''
|
||||
OR [ad].[AD_first_name] LIKE ''ONLYAPOS%''
|
||||
OR [ad].[AD_first_name] LIKE ''In APOS%''
|
||||
OR [ad].[AD_last_name] = ''DEMO''
|
||||
OR (
|
||||
[ad].[Address_ID] < 1500000000
|
||||
AND NOT EXISTS (SELECT 3 FROM [dbo].[Employee] WHERE EM_address = ad.Address_ID)
|
||||
AND NOT EXISTS (SELECT 3 FROM [dbo].[Customer] WHERE CUST_address = ad.Address_ID)
|
||||
)
|
||||
)
|
||||
AND [ad].[TT_masking] <> ''PERSIST''
|
||||
|
||||
UPDATE ad
|
||||
SET [ad].[TT_masking] = ''PERSIST''
|
||||
FROM Arizona.dbo.PH_prescriber ph
|
||||
INNER JOIN Arizona.dbo.Address ad
|
||||
ON [ad].[Address_ID] = [ph].[PHPR_address]
|
||||
WHERE [ph].[PHPR_deactivation_date] IS NULL
|
||||
AND [ad].[TT_masking] <> ''PERSIST'';
|
||||
'
|
||||
);
|
||||
END
|
||||
|
||||
/* declare variables */
|
||||
DECLARE @dbName VARCHAR(50), @queryAlterTxt NVARCHAR(MAX), @queryUpdateTxt NVARCHAR(MAX), @queryComplete NVARCHAR(MAX);
|
||||
|
||||
DECLARE csrAlter CURSOR FAST_FORWARD READ_ONLY FOR
|
||||
SELECT [dbName],
|
||||
[queryAlterTxt],
|
||||
[queryUpdateTxt]
|
||||
FROM @tblAlter s
|
||||
WHERE EXISTS (
|
||||
SELECT 1
|
||||
FROM sys.databases d
|
||||
WHERE d.[name] = s.[dbName]
|
||||
)
|
||||
|
||||
OPEN csrAlter
|
||||
|
||||
FETCH NEXT FROM csrAlter INTO @dbName, @queryAlterTxt, @queryUpdateTxt
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
SET @queryComplete='USE '+@dbName+';'+CHAR(13)+CHAR(10)+@queryAlterTxt;
|
||||
--PRINT @queryComplete;
|
||||
EXEC(@queryComplete);
|
||||
|
||||
SET @queryComplete='USE '+@dbName+';'+CHAR(13)+CHAR(10)+@queryUpdateTxt;
|
||||
--PRINT @queryComplete;
|
||||
EXEC(@queryComplete);
|
||||
|
||||
FETCH NEXT FROM csrAlter INTO @dbName, @queryAlterTxt, @queryUpdateTxt
|
||||
END
|
||||
|
||||
CLOSE csrAlter
|
||||
DEALLOCATE csrAlter
|
||||
END
|
||||
GO
|
||||
|
||||
BEGIN TRANSACTION
|
||||
EXEC delphix.[delphix_schema_changes] @removeSchemaChanges = 0
|
||||
|
||||
EXEC('
|
||||
SELECT ''arizona'' as db_name, COUNT(1) AS cnt, TT_masking
|
||||
FROM arizona.dbo.[Address]
|
||||
GROUP BY TT_masking
|
||||
')
|
||||
|
||||
IF EXISTS(SELECT 1 FROM sys.[databases] WHERE name ='arizona_delphix')
|
||||
EXEC('
|
||||
SELECT ''arizona_delphix'' as db_name, COUNT(1) AS cnt, TT_masking
|
||||
FROM arizona_delphix.dbo.[Address]
|
||||
GROUP BY TT_masking
|
||||
')
|
||||
|
||||
EXEC delphix.[delphix_schema_changes] @removeSchemaChanges = 1
|
||||
SELECT TOP 10 * FROM [Arizona].[dbo].[Address];
|
||||
|
||||
|
||||
ROLLBACK TRANSACTION
|
||||
--COMMIT TRANSACTION
|
||||
Reference in New Issue
Block a user