-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy path040. Drop all nonclustered Indexes - SQL Server Script
67 lines (55 loc) · 1.85 KB
/
040. Drop all nonclustered Indexes - SQL Server Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
-- 040. Drop all nonclustered Indexes - SQL Server Script
----------***************************-------------
-- Please note --
-- This script will not delete unique and clustered indexes --
---------***************************-------------
DECLARE @SchemaName VARCHAR(256),
@TableName VARCHAR(256),
@IndexName VARCHAR(256),
@TSQLDropIndex VARCHAR(MAX),
@IsDroppedSuccessfully bit
IF OBJECT_ID('tempdb..#tableDrop') IS NOT NULL DROP TABLE #tableDrop
CREATE table #tableDrop
(
TableName VARCHAR(256),
IndexName VARCHAR(256),
dropScriptText VARCHAR(MAX),
IsDroppedSuccessfully bit
)
DECLARE CursorIndexes CURSOR FOR
SELECT schema_name(t.schema_id), t.name, i.name
FROM sys.indexes i
INNER JOIN sys.tables t
ON t.object_id= i.object_id
WHERE i.type>0
AND t.is_ms_shipped=0
AND t.name<>'sysdiagrams' --
AND (
is_primary_key=0 -- To discard clustered indexes
AND is_unique_constraint=0 -- To discard indexes with unique key constraints
)
OPEN CursorIndexes
FETCH NEXT FROM CursorIndexes INTO @SchemaName,@TableName,@IndexName
WHILE @@fetch_status = 0
BEGIN
BEGIN TRY
SET @TSQLDropIndex = 'DROP INDEX '+QUOTENAME(@SchemaName)+ '.' + QUOTENAME(@TableName) + '.' +QUOTENAME(@IndexName)
SET @IsDroppedSuccessfully=0
BEGIN TRY
PRINT @TSQLDropIndex
EXEC(@TSQLDropIndex)
SET @IsDroppedSuccessfully=1
END TRY
BEGIN CATCH
SET @IsDroppedSuccessfully=0
END CATCH
INSERT INTO #tableDrop values(QUOTENAME(@SchemaName)+ '.[' +@TableName+']',@IndexName,@TSQLDropIndex,@IsDroppedSuccessfully)
END TRY
BEGIN CATCH
END CATCH
FETCH NEXT FROM CursorIndexes INTO @SchemaName,@TableName,@IndexName
END
CLOSE CursorIndexes
DEALLOCATE CursorIndexes
SELECT * FROM #tableDrop
IF OBJECT_ID('tempdb..#tableDrop') IS NOT NULL DROP TABLE #tableDrop