sync
This commit is contained in:
67
DELPHIX - manage change tracking.sql
Normal file
67
DELPHIX - manage change tracking.sql
Normal 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;
|
||||
Reference in New Issue
Block a user