This commit is contained in:
2024-05-17 16:08:42 +02:00
parent 77f3bb01eb
commit 3c2fe28db6
5 changed files with 2655 additions and 0 deletions

View File

@@ -0,0 +1,341 @@
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
ALTER TABLE dbo.[Address] DROP CONSTRAINT [DF_TT_masking];
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
ALTER TABLE dbo.[Address] DROP CONSTRAINT [DF_TT_masking];
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);
--PRINT REPLICATE('-', 48);
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 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 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

272
DELPHIX - clean schemas.sql Normal file
View File

@@ -0,0 +1,272 @@
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.arizonaCust_cleanup') IS NOT NULL
BEGIN
DROP PROCEDURE delphix.arizonaCust_cleanup;
END
GO
/*
OC-945
This procedure is used by Delphix to delete every data in arizonaCust.
As the schema is not unified through all the pharmacies, Delphix cannot be used.
We have received a confirmation from Gilles Balanche on the 15 of Mai 2024 that
arizonaCust in N+1 and N+2 env are not used, and that data can be deleted.
*/
CREATE PROCEDURE delphix.arizonaCust_cleanup
AS
BEGIN
--deletion of data in arizonaCust
IF EXISTS(
SELECT 1
FROM [master].[cfg].[InstanceContext] c
WHERE (
[type] = 'VALI' --N+1
OR [type] = 'DEVE' --N+2
)
)
BEGIN
DECLARE @tbl_name VARCHAR(111), @schema_name VARCHAR(11);
DECLARE @tplTruncate VARCHAR(MAX), @query VARCHAR(MAX);
SET @tplTruncate='
BEGIN TRY
TRUNCATE TABLE [arizonaCust].[@schema@].[@tbl@];
END TRY
BEGIN CATCH
DELETE FROM [arizonaCust].[@schema@].[@tbl@];
END CATCH
';
DECLARE csr_tbl CURSOR FAST_FORWARD READ_ONLY FOR
SELECT [d].[name], s.[name] as [schema_name]
FROM [ArizonaCUST].[sys].[tables] d
INNER JOIN [ArizonaCUST].[sys].[schemas] s on s.[schema_id] = d.[schema_id]
OPEN csr_tbl
FETCH NEXT FROM csr_tbl INTO @tbl_name, @schema_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @query = REPLACE(
REPLACE(
@tplTruncate
,'@schema@'
,@schema_name
)
,'@tbl@'
,@tbl_name
);
PRINT @query;
EXEC(@query);
FETCH NEXT FROM csr_tbl INTO @tbl_name, @schema_name
END
CLOSE csr_tbl
DEALLOCATE csr_tbl
END
END
go
IF OBJECT_ID('delphix.hciTool_cleanup') IS NOT NULL
BEGIN
DROP PROCEDURE delphix.hciTool_cleanup;
END
GO
/*
OC-945
This procedure is used by Delphix to delete every data in the TMP schema of hciTools.
As the schema is not unified through all the pharmacies, Delphix cannot be used.
*/
CREATE PROCEDURE delphix.hciTool_cleanup
AS
BEGIN
DECLARE @tbl_name VARCHAR(111), @schema_name VARCHAR(11);
DECLARE @tplTruncate VARCHAR(MAX), @query VARCHAR(MAX);
SET @tplTruncate='
BEGIN TRY
TRUNCATE TABLE [hciTools].[@schema@].[@tbl@];
END TRY
BEGIN CATCH
DELETE FROM [hciTools].[@schema@].[@tbl@];
END CATCH
';
DECLARE csr_tbl CURSOR FAST_FORWARD READ_ONLY FOR
SELECT [d].[name], s.[name] as [schema_name]
FROM [HCITools].[sys].[tables] d
INNER JOIN [HCITools].[sys].[schemas] s on s.[schema_id] = d.[schema_id]
WHERE schema_name(d.schema_id)='TMP'
OPEN csr_tbl
FETCH NEXT FROM csr_tbl INTO @tbl_name, @schema_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @query = REPLACE(
REPLACE(
@tplTruncate
,'@schema@'
,@schema_name
)
,'@tbl@'
,@tbl_name
);
PRINT @query;
EXEC(@query);
FETCH NEXT FROM csr_tbl INTO @tbl_name, @schema_name
END
CLOSE csr_tbl
DEALLOCATE csr_tbl
END
GO
IF OBJECT_ID('delphix.arizonaLD_cleanup') IS NOT NULL
BEGIN
DROP PROCEDURE delphix.arizonaLD_cleanup;
END
GO
/*
OC-945
This procedure is used by Delphix to delete every data in arizonaLD database.
As the schema is not unified through all the pharmacies, Delphix cannot be used.
*/
CREATE PROCEDURE delphix.arizonaLD_cleanup
AS
BEGIN
DECLARE @tbl_name VARCHAR(111), @schema_name VARCHAR(11);
DECLARE @tplTruncate VARCHAR(MAX), @query VARCHAR(MAX);
SET @tplTruncate='
BEGIN TRY
TRUNCATE TABLE [arizonaLD].[@schema@].[@tbl@];
END TRY
BEGIN CATCH
DELETE FROM [arizonaLD].[@schema@].[@tbl@];
END CATCH
';
DECLARE csr_tbl CURSOR FAST_FORWARD READ_ONLY FOR
SELECT [d].[name], s.[name] as [schema_name]
FROM [arizonaLD].[sys].[tables] d
INNER JOIN [arizonaLD].[sys].[schemas] s on s.[schema_id] = d.[schema_id]
OPEN csr_tbl
FETCH NEXT FROM csr_tbl INTO @tbl_name, @schema_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @query = REPLACE(
REPLACE(
@tplTruncate
,'@schema@'
,@schema_name
)
,'@tbl@'
,@tbl_name
);
PRINT @query;
EXEC(@query);
FETCH NEXT FROM csr_tbl INTO @tbl_name, @schema_name
END
CLOSE csr_tbl
DEALLOCATE csr_tbl
END
GO
IF OBJECT_ID('delphix.arizona_cleanup') IS NOT NULL
BEGIN
DROP PROCEDURE delphix.arizona_cleanup;
END
GO
/*
OC-945
This procedure is used by Delphix to delete content of tables named TT% or ZZ% in the arizona database.
As the schema is not unified through all the pharmacies, Delphix cannot be used.
*/
CREATE PROCEDURE delphix.arizona_cleanup
AS
BEGIN
DECLARE @tbl_name VARCHAR(111), @schema_name VARCHAR(11);
DECLARE @tplTruncate VARCHAR(MAX), @query VARCHAR(MAX);
SET @tplTruncate='
BEGIN TRY
TRUNCATE TABLE [arizona].[@schema@].[@tbl@];
END TRY
BEGIN CATCH
DELETE FROM [arizona].[@schema@].[@tbl@];
END CATCH
';
DECLARE csr_tbl CURSOR FAST_FORWARD READ_ONLY FOR
SELECT [d].[name], s.[name] as [schema_name]
FROM [arizona].[sys].[tables] d
INNER JOIN [Arizona].[sys].[schemas] s on s.[schema_id] = d.[schema_id]
WHERE [d].[name] LIKE 'TT[_]%'
OR [d].[name] LIKE 'ZZ[_]%'
OPEN csr_tbl
FETCH NEXT FROM csr_tbl INTO @tbl_name, @schema_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @query = REPLACE(
REPLACE(
@tplTruncate
,'@schema@'
,@schema_name
)
,'@tbl@'
,@tbl_name
);
PRINT @query;
EXEC(@query);
FETCH NEXT FROM csr_tbl INTO @tbl_name, @schema_name
END
CLOSE csr_tbl
DEALLOCATE csr_tbl
END
GO
begin transaction
exec hcitools.delphix.arizonaCust_cleanup;
exec hcitools.delphix.hciTool_cleanup;
exec hcitools.delphix.arizonaLD_cleanup;
exec hcitools.delphix.arizona_cleanup;
rollback transaction

File diff suppressed because it is too large Load Diff

View File

@@ -52,6 +52,7 @@ INSERT INTO @users ([login],
[name])
VALUES ('CENTRALINFRA\ua253440', 'Oliver'),
('CENTRALINFRA\ua253450', 'Franck'),
('CENTRALINFRA\ua193890','Muhamed'),
('CENTRALINFRA\ua210510', 'Wyn');
--#region create logins

View File

@@ -0,0 +1,67 @@
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.change_tracking_mgmt') IS NOT NULL
BEGIN
DROP PROCEDURE delphix.change_tracking_mgmt;
END
GO
/*
TPDT-535
This procedure is used by Delphix to disable change tracking on every tables of a given db and schema
This is a wrapper around [hciTools].[dbo].[DBA_Change_Tracking_Maintenance] that refuses to enable maintenance mode on all tables directly.
*/
CREATE PROCEDURE delphix.change_tracking_mgmt
@schema_name VARCHAR(100) = 'dbo'
,@maintenance_enabled BIT = 1
AS
BEGIN
SET NOCOUNT ON;
DECLARE @database_name VARCHAR(100) = 'Arizona';
DECLARE @sqlQuery VARCHAR(MAX)='';
DECLARE @tplGetTables VARCHAR(MAX) ='
INSERT INTO #tblList([database], [schema_name], [table_name])
SELECT ''@db@'' as Database_name, s.name AS Schema_name, t.name AS Table_name
FROM @db@.sys.change_tracking_tables ctt
JOIN @db@.sys.tables t
ON t.object_id = ctt.object_id
JOIN @db@.sys.schemas s
ON s.schema_id = t.schema_id
WHERE s.name = ''@schema@''
ORDER BY s.name, t.name;
';
--fetch a list of tables with change tracking in the specified db and schema
IF OBJECT_ID('tempdb..#tblList')IS NOT NULL BEGIN;
DROP TABLE #tblList;
END;
CREATE TABLE #tblList (
[database] VARCHAR(100) NOT NULL
,[schema_name] VARCHAR(100) NOT NULL
,[table_name] VARCHAR(100) NOT NULL
);
SELECT @sqlQuery = REPLACE(REPLACE(@tplGetTables, '@db@', @database_name), '@schema@', @schema_name);
PRINT @sqlQuery;
EXEC(@sqlQuery);
SET @sqlQuery = '';
SELECT @sqlQuery = @sqlQuery +'EXEC [arizona].[dbo].[DBA_Change_Tracking_Maintenance] @in_tableName = N'''+l.[table_name]+''', @in_maintMode = '+CAST(@maintenance_enabled AS CHAR(1))+';'+CHAR(13)+CHAR(10)
FROM [#tblList] l
PRINT @sqlQuery;
EXEC(@sqlQuery);
END
GO
EXEC [HCITools].[delphix].[change_tracking_mgmt] @schema_name = 'wkl', @maintenance_enabled = 0;