Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT
- dbschemas.[name] AS 'Schema',
- dbtables.[name] AS 'Table',
- dbindexes.[name] AS 'Index',
- indexstats.avg_fragmentation_in_percent,
- CASE
- WHEN indexstats.avg_fragmentation_in_percent<5 THEN ''
- WHEN indexstats.avg_fragmentation_in_percent BETWEEN 5 AND 30 THEN 'ALTER INDEX ['+dbindexes.[name]+']'+CHAR(13)+' ON '+dbschemas.[name]+'.['+dbtables.[name]+'] '+CHAR(13)+'REORGANIZE'
- WHEN indexstats.avg_fragmentation_in_percent>30 THEN 'ALTER INDEX ['+dbindexes.[name]+']'+CHAR(13)+' ON '+dbschemas.[name]+'.['+dbtables.[name]+'] '+CHAR(13)+'REBUILD'
- END AS [SQL statement],
- indexstats.page_count
- FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
- INNER JOIN sys.tables dbtables ON dbtables.[object_id] = indexstats.[object_id]
- INNER JOIN sys.schemas dbschemas ON dbtables.[schema_id] = dbschemas.[schema_id]
- INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
- AND indexstats.index_id = dbindexes.index_id
- AND indexstats.avg_fragmentation_in_percent>5
- WHERE dbindexes.[name] IS NOT NULL
- ORDER BY indexstats.avg_fragmentation_in_percent DESC,
- indexstats.page_count DESC
- /*---- Looping ----*/
- DECLARE @TSql NVARCHAR(500)
- DECLARE MyCursor CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY
- FOR SELECT
- CASE
- WHEN indexstats.avg_fragmentation_in_percent<5 THEN ''
- WHEN indexstats.avg_fragmentation_in_percent BETWEEN 5 AND 30 THEN 'ALTER INDEX ['+dbindexes.[name]+']'+CHAR(13)+' ON '+dbschemas.[name]+'.['+dbtables.[name]+'] '+CHAR(13)+'REORGANIZE'
- WHEN indexstats.avg_fragmentation_in_percent>30 THEN 'ALTER INDEX ['+dbindexes.[name]+']'+CHAR(13)+' ON '+dbschemas.[name]+'.['+dbtables.[name]+'] '+CHAR(13)+'REBUILD'
- END AS [SQL statement]
- FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
- INNER JOIN sys.tables dbtables ON dbtables.[object_id] = indexstats.[object_id]
- INNER JOIN sys.schemas dbschemas ON dbtables.[schema_id] = dbschemas.[schema_id]
- INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
- AND indexstats.index_id = dbindexes.index_id
- AND indexstats.avg_fragmentation_in_percent>5
- WHERE dbindexes.[name] IS NOT NULL
- ORDER BY indexstats.avg_fragmentation_in_percent DESC,
- indexstats.page_count DESC
- OPEN Mycursor
- FETCH NEXT FROM MyCursor INTO @TSql
- WHILE @@FETCH_STATUS = 0
- BEGIN
- EXECUTE sp_executesql @TSql
- FETCH NEXT FROM MyCursor INTO @TSql
- END
- CLOSE MyCursor
- DEALLOCATE MYcursor
Advertisement
Add Comment
Please, Sign In to add comment