68 lines
2.0 KiB
PL/PgSQL
68 lines
2.0 KiB
PL/PgSQL
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;
|