Files
sql-scripts/DELPHIX - clean schemas.sql
2024-05-17 16:08:42 +02:00

272 lines
6.6 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.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