Skip to content

Commit c1daefe

Browse files
Merge pull request #477 from erikdarlingdata/dev
Dev
2 parents 9a6ff12 + b435433 commit c1daefe

File tree

1 file changed

+30
-5
lines changed

1 file changed

+30
-5
lines changed

sp_IndexCleanup BETA/sp_IndexCleanup BETA.sql

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
164164
@full_object_name nvarchar(768) = NULL,
165165
@final_script nvarchar(MAX) = '',
166166
/*cursor variables*/
167+
@c_database_id integer,
168+
@c_schema_name sysname,
167169
@c_table_name sysname,
168170
@c_index_name sysname,
169171
@c_is_unique bit,
@@ -275,6 +277,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
275277
database_id integer NOT NULL,
276278
object_id integer NOT NULL,
277279
index_id integer NOT NULL,
280+
schema_name sysname NOT NULL,
278281
table_name sysname NOT NULL,
279282
index_name sysname NULL,
280283
column_name sysname NOT NULL,
@@ -323,7 +326,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
323326
PRIMARY KEY CLUSTERED(database_id, object_id, index_id, partition_id)
324327
);
325328

326-
CREATE TABLE #index_analysis
329+
CREATE TABLE
330+
#index_analysis
327331
(
328332
database_id integer NOT NULL,
329333
schema_name sysname NOT NULL,
@@ -340,7 +344,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
340344
PRIMARY KEY CLUSTERED (table_name, index_name)
341345
);
342346

343-
CREATE TABLE #index_cleanup_report
347+
CREATE TABLE
348+
#index_cleanup_report
344349
(
345350
database_name sysname NOT NULL,
346351
table_name sysname NOT NULL,
@@ -526,6 +531,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
526531
database_id = @database_id,
527532
t.object_id,
528533
i.index_id,
534+
schema_name = s.name,
529535
table_name = t.name,
530536
index_name = i.name,
531537
column_name = c.name,
@@ -652,6 +658,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
652658
database_id,
653659
object_id,
654660
index_id,
661+
schema_name,
655662
table_name,
656663
index_name,
657664
column_name,
@@ -861,6 +868,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
861868
WITH
862869
(TABLOCK)
863870
(
871+
database_id,
872+
schema_name,
864873
table_name,
865874
index_name,
866875
is_unique,
@@ -869,6 +878,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
869878
filter_definition
870879
)
871880
SELECT
881+
@database_id,
882+
id1.schema_name,
872883
id1.table_name,
873884
id1.index_name,
874885
id1.is_unique,
@@ -922,6 +933,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
922933
id1.filter_definition
923934
FROM #index_details id1
924935
GROUP BY
936+
id1.schema_name,
925937
id1.table_name,
926938
id1.index_name,
927939
id1.is_unique,
@@ -949,6 +961,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
949961
READ_ONLY
950962
FOR
951963
SELECT DISTINCT
964+
ia.database_id,
965+
ia.schema_name,
952966
ia.table_name,
953967
ia.index_name,
954968
ia.is_unique,
@@ -963,6 +977,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
963977
FETCH NEXT
964978
FROM @index_cursor
965979
INTO
980+
@c_database_id,
981+
@c_schema_name,
966982
@c_table_name,
967983
@c_index_name,
968984
@c_is_unique,
@@ -974,13 +990,17 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
974990
IndexColumns AS
975991
(
976992
SELECT
993+
id.database_id,
994+
id.schema_name,
977995
id.table_name,
978996
id.index_name,
979997
id.column_name,
980998
id.is_included_column,
981999
id.key_ordinal
9821000
FROM #index_details id
983-
WHERE id.table_name = @c_table_name
1001+
WHERE id.database_id = @c_database_id
1002+
AND id.schema_name = @c_schema_name
1003+
AND id.table_name = @c_table_name
9841004
),
9851005
CurrentIndexColumns AS
9861006
(
@@ -1087,12 +1107,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10871107
''
10881108
)
10891109
FROM #index_analysis ia
1090-
WHERE ia.table_name = @c_table_name
1110+
WHERE ia.database_id = @c_database_id
1111+
AND ia.schema_name = @c_schema_name
1112+
AND ia.table_name = @c_table_name
10911113
AND ia.index_name <> @c_index_name;
10921114

10931115
FETCH NEXT
10941116
FROM @index_cursor
10951117
INTO
1118+
@c_database_id,
1119+
@c_schema_name,
10961120
@c_table_name,
10971121
@c_index_name,
10981122
@c_is_unique,
@@ -1109,7 +1133,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
11091133
THEN N'DROP'
11101134
WHEN superseded_by IS NOT NULL
11111135
AND missing_columns IS NULL
1112-
THEN N'MERGE INTO ' + superseded_by
1136+
THEN N'MERGE INTO ' +
1137+
superseded_by
11131138
WHEN superseded_by IS NOT NULL
11141139
AND missing_columns IS NOT NULL
11151140
THEN N'MERGE INTO ' +

0 commit comments

Comments
 (0)