This commit is contained in:
2023-02-22 09:06:46 +01:00
parent 911e4e6720
commit 5874709908
22 changed files with 1081 additions and 314 deletions

View File

@@ -1,14 +1,14 @@
USE Arizona;
GO
DELETE FROM upd.IA_IndexesAlignementActions
DELETE FROM upd.IA_IndexAlignementActions
WHERE IA_schema_name = 'dbo.Criteria';
BEGIN TRANSACTION;
WITH ColInfo
AS (SELECT TblName = o.name,
SchemaTbl = s.name + '.' + o.name,
IndexName = i.name,
AS (SELECT TblName = [o].[name],
SchemaTbl = s.name + '.' + [o].[name],
IndexName = [i].[name],
s.name AS schemaName,
IsPrimaryKey = i.is_primary_key,
IsUniqueConstraint = i.is_unique_constraint,
@@ -21,29 +21,29 @@ AS (SELECT TblName = o.name,
END AS is_clustered,
ColName = c.name,
IsComputedCol = c.is_computed,
IsIncludedCol = ic.is_included_column,
ic.key_ordinal,
IsIncludedCol = [ic].is_included_column,
[ic].key_ordinal,
FilterDefinition = i.filter_definition,
i.object_id,
i.ignore_dup_key,
i.fill_factor,
i.is_padded
FROM sys.objects o
JOIN sys.schemas s
FROM [sys].objects o
JOIN [sys].schemas s
ON o.schema_id = s.schema_id
JOIN sys.columns c
JOIN [sys].columns c
ON o.object_id = c.object_id
JOIN sys.indexes i
JOIN [sys].indexes i
ON c.object_id = i.object_id
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 = 'criteria'
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] = 'criteria'
AND s.name = 'dbo')
SELECT DISTINCT
'
INSERT INTO arizona.upd.IA_IndexesAlignementActions
INSERT INTO arizona.upd.IA_IndexAlignementActions
(
IA_executionDate,
IA_schema_name,
@@ -65,16 +65,17 @@ INSERT INTO arizona.upd.IA_IndexesAlignementActions
IA_actualColumns,
IA_actualIncludedColumns,
IA_statusMsg,
IA_index_options
IA_index_options,
IA_reference
)
SELECT
NULL as IA_executionDate,
''' + x.schemaName + ''' as IA_schema_name,
''' + x.TblName + ''' as IA_table_name,
''' + [x].schemaName + ''' as IA_schema_name,
''' + [x].TblName + ''' as IA_table_name,
''' + c.IndexColumns + ''' as IA_columns_name,
0 as IA_is_clustered,
' + CASE
WHEN x.IsUnique = 0 THEN
WHEN [x].IsUnique = 0 THEN
'0'
ELSE
'1'
@@ -87,7 +88,7 @@ SELECT
END + ' as IA_included_columns,
0 as IA_is_to_be_deleted,
0 as IA_is_to_be_recreated,
''' + x.IndexName
''' + [x].IndexName
+ ''' as IA_expected_index_name,
NULL as IA_foundIndexName,
0 as IA_wasIndexFound,
@@ -100,28 +101,29 @@ SELECT
NULL as IA_actualIncludedColumns,
NULL as IA_statusMsg,
''' + CASE
WHEN INDEXPROPERTY(x.object_id, x.IndexName, 'IsStatistics') = 1 THEN
WHEN INDEXPROPERTY([x].object_id, [x].IndexName, 'IsStatistics') = 1 THEN
'STATISTICS_NORECOMPUTE = ON, '
ELSE
'STATISTICS_NORECOMPUTE = OFF, '
END + CASE
WHEN x.ignore_dup_key = 1 THEN
WHEN [x].ignore_dup_key = 1 THEN
'IGNORE_DUP_KEY = ON, '
ELSE
'IGNORE_DUP_KEY = OFF, '
END + CASE
WHEN x.is_padded = 1 THEN
WHEN [x].is_padded = 1 THEN
'PAD_INDEX = ON,'
ELSE
''
END + 'SORT_IN_TEMPDB = OFF, FILLFACTOR =' + CAST(x.fill_factor AS VARCHAR(3))
+ ''' as IA_index_options
END + 'SORT_IN_TEMPDB = OFF, FILLFACTOR =' + CAST([x].fill_factor AS VARCHAR(3))
+ ''' as IA_index_options,
NULL as IA_reference
WHERE NOT EXISTS(
SELECT 1
FROM arizona.upd.IA_IndexesAlignementActions s
FROM arizona.upd.IA_IndexAlignementActions s
WHERE s.IA_executionDate IS NULL
AND s.IA_schema_name = ''' + x.schemaName + '''
AND s.IA_table_name = ''' + x.TblName + '''
AND s.IA_schema_name = ''' + [x].schemaName + '''
AND s.IA_table_name = ''' + [x].TblName + '''
AND s.IA_columns_name = ''' + c.IndexColumns + '''
' + CASE
WHEN ci.IncludedColumns IS NOT NULL THEN
@@ -131,37 +133,37 @@ WHERE NOT EXISTS(
END + '
)
' AS cmd,
x.IndexName,
[x].IndexName,
c.IndexColumns,
ci.IncludedColumns
FROM ColInfo x
CROSS APPLY
(
SELECT IndexColumns = STUFF(sq.strXML, 1, 2, '')
SELECT IndexColumns = STUFF([sq].strXML, 1, 2, '')
FROM
(
SELECT ', ' + ISNULL(x2.ColName, '')
SELECT ', ' + ISNULL([x2].ColName, '')
FROM ColInfo x2
WHERE x.TblName = x2.TblName
AND x.schemaName = x2.schemaName
AND x.IndexName = x2.IndexName
AND x2.IsIncludedCol = 0
ORDER BY x2.key_ordinal
WHERE [x].TblName = [x2].TblName
AND [x].schemaName = [x2].schemaName
AND [x].IndexName = [x2].IndexName
AND [x2].IsIncludedCol = 0
ORDER BY [x2].key_ordinal
FOR XML PATH('')
) sq(strXML)
) c
OUTER APPLY
(
SELECT IncludedColumns = STUFF(sq.strXML, 1, 2, '')
SELECT IncludedColumns = STUFF([sq].strXML, 1, 2, '')
FROM
(
SELECT ', ' + ISNULL(x2.ColName, '')
SELECT ', ' + ISNULL([x2].ColName, '')
FROM ColInfo x2
WHERE x.TblName = x2.TblName
AND x.schemaName = x2.schemaName
AND x.IndexName = x2.IndexName
AND x2.IsIncludedCol = 1
ORDER BY x2.key_ordinal
WHERE [x].TblName = [x2].TblName
AND [x].schemaName = [x2].schemaName
AND [x].IndexName = [x2].IndexName
AND [x2].IsIncludedCol = 1
ORDER BY [x2].key_ordinal
FOR XML PATH('')
) sq(strXML)
) ci;