Я не знаю вашей ситуации, но если вы запустите такой скрипт в действующей базе данных, вы можете получить неприятные проблемы с производительностью во время ее работы. Если некоторые индексы сильно фрагментированы, скажем, более 40-50%, тогда это станет лучшей альтернативой для перестройки.
Но вы, конечно, можете сделать этот скрипт что-то вроде:
DECLARE cur_idx CURSOR
SELECT OBJECT_NAME(OBJECT_ID)
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, N'LIMITED')
WHERE avg_fragmentation_in_percent > @your_limit_for_fragmentation
OPEN CURSOR cur_idx
FETCH NEXT FROM cur_idx INTO @idx_name
WHILE @@FETCHSTATUS = 0 BEGIN
--create dynamic sql statement
END
- закрыть курсор и очистить