347 lines
12 KiB
Transact-SQL
347 lines
12 KiB
Transact-SQL
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
|