SQL Server’da Veritabanındaki Tüm Nonclustered Index’leri Kaldırmak

Herkese merhaba,

Bu yazıda SQL Server’da veritabanındaki tüm Nonclustered Index’leri kaldırmak ile ilgili bilgi vermeye çalışacağım.

SQL Server’da bazı durumlarda veritabanındaki tüm Nonclustered Index’leri kaldırmak isteyebilirsiniz.

Aşağıdaki kodu kullanarak siz de bu işlemi rahatlıkla yapabilirsiniz.

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

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

265 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!