the missing hyphen in the folder name was bothering me...
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
/*
|
||||
Server: sun791aps.sunstore.ch
|
||||
Format: GCM
|
||||
Business: TPPHAR
|
||||
type: PROD
|
||||
Version: 21.3.11111.00064
|
||||
|
||||
02.11.2022, TSC
|
||||
*/
|
||||
USE [Arizona];
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
SET XACT_ABORT ON;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @index_to_drop TABLE ([columns_in_index] VARCHAR(MAX) NOT NULL,
|
||||
[index_name] VARCHAR(500) NULL);
|
||||
|
||||
INSERT @index_to_drop ([columns_in_index])
|
||||
VALUES ('ET_APS_TS'),
|
||||
('ET_entry_address'),
|
||||
('ET_entry_type'),
|
||||
('ET_master_ID'),
|
||||
('ET_predefined_entry'),
|
||||
('ET_sales_tax_code'),
|
||||
('ET_bmc_user_profile'),
|
||||
('ET_currency');
|
||||
|
||||
/* find index name with defined columns */
|
||||
WITH [ColInfo]
|
||||
AS (SELECT [o].[name] AS [TblName],
|
||||
[s].[name] + '.' + [o].[name] AS [SchemaTbl],
|
||||
[i].[name] AS [IndexName],
|
||||
[i].[is_primary_key] AS [IsPrimaryKey],
|
||||
[i].[is_unique_constraint] AS [IsUniqueConstraint],
|
||||
[i].[is_unique] AS [IsUnique],
|
||||
[c].[name] AS [ColName],
|
||||
[c].[is_computed] AS [IsComputedCol],
|
||||
[ic].[is_included_column] AS [IsIncludedCol],
|
||||
[ic].[key_ordinal],
|
||||
[i].[filter_definition] AS [FilterDefinition],
|
||||
CHAR(13) + CHAR(10) AS [crlf],
|
||||
';' + CHAR(13) + CHAR(10) + 'GO' + CHAR(13) + CHAR(10) AS [crlfgo]
|
||||
FROM [sys].[objects] [o]
|
||||
INNER JOIN [sys].[schemas] [s]
|
||||
ON [o].[schema_id] = [s].[schema_id]
|
||||
INNER JOIN [sys].[columns] [c]
|
||||
ON [o].[object_id] = [c].[object_id]
|
||||
INNER JOIN [sys].[indexes] [i]
|
||||
ON [c].[object_id] = [i].[object_id]
|
||||
INNER JOIN [sys].[index_columns] [ic]
|
||||
ON [i].[index_id] = [ic].[index_id]
|
||||
AND [o].[object_id] = [ic].[object_id]
|
||||
AND [c].[column_id] = [ic].[column_id]
|
||||
WHERE [o].[name] = 'entry'
|
||||
--AND i.filter_definition IS NOT NULL
|
||||
)
|
||||
|
||||
--SELECT itd.columns_in_index
|
||||
-- ,itd.index_name
|
||||
-- ,lst.IndexName
|
||||
-- ,lst.IndexColumns
|
||||
-- ,lst.IncludedColumns
|
||||
UPDATE [itd]
|
||||
SET [itd].[index_name] = [lst].[IndexName]
|
||||
FROM ( SELECT DISTINCT [x].[TblName],
|
||||
[x].[IndexName],
|
||||
[x].[IsPrimaryKey],
|
||||
[x].[IsUniqueConstraint],
|
||||
[x].[IsUnique],
|
||||
--,size.IndexSizeKB
|
||||
[c].[IndexColumns],
|
||||
[ci].[IncludedColumns],
|
||||
[cc].[ComputedColumns],
|
||||
[x].[FilterDefinition],
|
||||
[x].[crlf] + '-- ' + [x].[IndexName] + [x].[crlf] +
|
||||
--check drop
|
||||
'IF INDEXPROPERTY(OBJECT_ID(''' + [x].[SchemaTbl] + '''), ''' + [x].[IndexName]
|
||||
+ ''' , ''IndexID'' ) IS NOT NULL BEGIN;' + [x].[crlf]
|
||||
+ CASE
|
||||
WHEN [x].[IsPrimaryKey] = 1 THEN NULL
|
||||
WHEN [x].[IsUniqueConstraint] = 1 THEN
|
||||
--drop statement
|
||||
' ALTER TABLE ' + [x].[SchemaTbl] + ' DROP CONSTRAINT ' + [x].[IndexName] + ';'
|
||||
+ [x].[crlf] + 'END' + [x].[crlfgo]
|
||||
--check create
|
||||
+ 'IF INDEXPROPERTY(OBJECT_ID(''' + [x].[SchemaTbl] + '''), ''' + [x].[IndexName]
|
||||
+ ''' , ''IndexID'' ) IS NULL BEGIN;' + [x].[crlf] +
|
||||
--create statement
|
||||
+' ALTER TABLE '
|
||||
+ [x].[SchemaTbl] + ' ADD CONSTRAINT ' + [x].[IndexName] + ' UNIQUE ('
|
||||
+ [c].[IndexColumns] + ');' + [x].[crlf] + 'END' + [x].[crlfgo]
|
||||
ELSE
|
||||
--drop statement
|
||||
' DROP INDEX ' + [x].[SchemaTbl] + '.' + [x].[IndexName] + ';' + [x].[crlf]
|
||||
+ 'END' + [x].[crlfgo]
|
||||
--check create
|
||||
+ 'IF INDEXPROPERTY(OBJECT_ID(''' + [x].[SchemaTbl] + '''), ''' + [x].[IndexName]
|
||||
+ ''' , ''IndexID'' ) IS NULL BEGIN;' + [x].[crlf] +
|
||||
--create statement
|
||||
+' CREATE '
|
||||
+ CASE
|
||||
WHEN [x].[IsUnique] = 1 THEN 'UNIQUE '
|
||||
ELSE '' END + 'INDEX ' + [x].[IndexName] + ' ON ' + [x].[SchemaTbl] + '('
|
||||
+ [c].[IndexColumns] + ')'
|
||||
+ ISNULL(' INCLUDE(' + [ci].[IncludedColumns] + ')', '')
|
||||
+ ISNULL(' WHERE ' + [x].[FilterDefinition], '') + ';' + [x].[crlf] + 'END'
|
||||
+ [x].[crlfgo] END AS [DropCreateSQL]
|
||||
FROM [ColInfo] [x]
|
||||
CROSS APPLY ( SELECT STUFF([sq].[strXML], 1, 2, '') AS [IndexColumns]
|
||||
FROM ( SELECT ', ' + ISNULL([x2].[ColName], '')
|
||||
FROM [ColInfo] [x2]
|
||||
WHERE [x].[TblName] = [x2].[TblName]
|
||||
AND [x].[IndexName] = [x2].[IndexName]
|
||||
AND [x2].[IsIncludedCol] = 0
|
||||
ORDER BY [x2].[key_ordinal]
|
||||
FOR XML PATH('')) [sq]([strXML]) ) [c]
|
||||
OUTER APPLY ( SELECT STUFF([sq].[strXML], 1, 2, '') AS [IncludedColumns]
|
||||
FROM ( SELECT ', ' + ISNULL([x2].[ColName], '')
|
||||
FROM [ColInfo] [x2]
|
||||
WHERE [x].[TblName] = [x2].[TblName]
|
||||
AND [x].[IndexName] = [x2].[IndexName]
|
||||
AND [x2].[IsIncludedCol] = 1
|
||||
ORDER BY [x2].[key_ordinal]
|
||||
FOR XML PATH('')) [sq]([strXML]) ) [ci]
|
||||
OUTER APPLY ( SELECT STUFF([sq].[strXML], 1, 2, '') AS [ComputedColumns]
|
||||
FROM ( SELECT ', ' + ISNULL([x2].[ColName], '')
|
||||
FROM [ColInfo] [x2]
|
||||
WHERE [x].[TblName] = [x2].[TblName]
|
||||
AND [x].[IndexName] = [x2].[IndexName]
|
||||
AND [x2].[IsComputedCol] = 1
|
||||
ORDER BY [x2].[key_ordinal]
|
||||
FOR XML PATH('')) [sq]([strXML]) ) [cc] ) [lst]
|
||||
INNER JOIN @index_to_drop [itd]
|
||||
ON [lst].[IndexColumns] = [itd].[columns_in_index];
|
||||
|
||||
SELECT *
|
||||
FROM @index_to_drop [itd];
|
||||
|
||||
/* declare variables */
|
||||
DECLARE @index_name VARCHAR(MAX);
|
||||
|
||||
DECLARE [drop_index] CURSOR LOCAL FAST_FORWARD READ_ONLY FOR
|
||||
SELECT [itd].[index_name]
|
||||
FROM @index_to_drop [itd]
|
||||
WHERE [itd].[index_name] IS NOT NULL;
|
||||
|
||||
OPEN [drop_index];
|
||||
|
||||
FETCH NEXT FROM [drop_index]
|
||||
INTO @index_name;
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
EXEC ('DROP INDEX ' + @index_name + ' ON dbo.entry;');
|
||||
|
||||
FETCH NEXT FROM [drop_index]
|
||||
INTO @index_name;
|
||||
END;
|
||||
|
||||
CLOSE [drop_index];
|
||||
DEALLOCATE [drop_index];
|
||||
|
||||
|
||||
ROLLBACK TRANSACTION;
|
||||
Reference in New Issue
Block a user