Skip to content

Commit 41c7f8d

Browse files
committed
Update IndexOptimize.sql
fixes to original code to only use the current definition, rather than all columns.
1 parent be7a674 commit 41c7f8d

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

IndexOptimize.sql

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
SET ANSI_NULLS ON
1+
use master
2+
go
3+
4+
SET ANSI_NULLS ON
25
GO
36
SET QUOTED_IDENTIFIER ON
47
GO
@@ -2256,26 +2259,32 @@ BEGIN
22562259
ELSE IF @CurrentIsExtenalTable = 1 AND @ExternalTables = 'REBUILD' AND @Version >= 13
22572260
BEGIN
22582261

2259-
SET @ExternalTableColumnListCommand = @ExternalTableColumnListCommand + 'SELECT columns.name '
2260-
+ 'FROM sys.external_tables as external_tables '
2261-
+ 'INNER JOIN SYS.external_table_columns AS external_table_columns ON external_tables.object_id = external_table_columns.object_id '
2262-
+ 'INNER JOIN sys.columns as columns on external_table_columns.column_id = columns.column_id '
2263-
+ 'AND external_tables.object_id = columns.object_id '
2264-
+ 'WHERE external_tables.name = ' + QUOTENAME(@CurrentObjectName, '''') + ' '
2265-
+ 'AND external_tables.schema_id = ' + CAST(@CurrentSchemaID AS varchar(100)) +';'
2266-
2267-
2262+
SET @ExternalTableColumnListCommand = 'SELECT columns.name '
2263+
+ 'FROM sys.external_tables as external_tables '
2264+
+ 'INNER JOIN SYS.external_table_columns AS external_table_columns ON external_tables.object_id = external_table_columns.object_id '
2265+
+ 'INNER JOIN sys.columns as columns on external_table_columns.column_id = columns.column_id '
2266+
+ 'AND external_tables.object_id = columns.object_id '
2267+
+ 'INNER JOIN sys.stats AS stats on external_tables.object_id = stats.object_id '
2268+
+ 'INNER JOIN sys.stats_columns AS stats_columns on stats.object_id = stats_columns.object_id '
2269+
+ 'AND columns.column_id = stats_columns.column_id '
2270+
+ 'AND stats.stats_id = stats_columns.stats_id '
2271+
+ 'WHERE external_tables.name = ' + QUOTENAME(@CurrentObjectName, '''') + ' '
2272+
+ 'AND external_tables.schema_id = ' + CAST(@CurrentSchemaID AS varchar(100))
2273+
+ 'AND stats.name = ' + QUOTENAME(@CurrentStatisticsName,'''') +';'
22682274

22692275
INSERT INTO @tmpExternalTableColumnList (ColumnName)
22702276
EXECUTE @CurrentDatabase_sp_executesql @stmt = @ExternalTableColumnListCommand
2271-
2277+
22722278
SET @CurrentCommand += 'DROP STATISTICS ' + QUOTENAME(@CurrentSchemaName) + '.' + QUOTENAME(@CurrentObjectName) + '.' + QUOTENAME(@CurrentStatisticsName) + ';'
22732279
SET @CurrentCommand += 'CREATE STATISTICS ' + QUOTENAME(@CurrentStatisticsName) + ' ON ' + QUOTENAME(@CurrentSchemaName) + '.' + QUOTENAME(@CurrentObjectName) + '('
2280+
22742281
SELECT @CurrentCommand += QUOTENAME(T.ColumnName) + ','
22752282
FROM @tmpExternalTableColumnList AS T
22762283

22772284
SET @CurrentCommand = LEFT(@CurrentCommand, LEN(@CurrentCommand)-1) + ') '
22782285

2286+
DELETE FROM @tmpExternalTableColumnList
2287+
22792288
END
22802289

22812290
IF @CurrentMaxDOP IS NOT NULL AND ((@Version >= 12.06024 AND @Version < 13) OR (@Version >= 13.05026 AND @Version < 14) OR @Version >= 14.030154) AND @CurrentIsExtenalTable = 0

0 commit comments

Comments
 (0)