Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. CREATE PROCEDURE dbo.asp_reindex @database SYSNAME, @fragpercent INT
  2. AS
  3. DECLARE @cmd NVARCHAR(max),
  4. @table SYSNAME,
  5. @schema SYSNAME
  6.  
  7. DECLARE curtable CURSOR FOR
  8. SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, database_id) SchemaName,
  9. OBJECT_NAME(object_id, database_id) TableName
  10. FROM sys.dm_db_index_physical_stats (DB_ID(@database), NULL, NULL, NULL, 'SAMPLED')
  11. WHERE avg_fragmentation_in_percent >= @fragpercent
  12. FOR READ ONLY
  13. OPEN CURTABLE
  14. fetch CURTABLE into @SCHEMA, @TABLE
  15. while @@FETCH_STATUS = 0
  16. BEGIN
  17. set @cmd = 'ALTER INDEX ALL ON' + @database + '.' + @schema + '.' + @table
  18. + ' REBUILD WITH (ONLINE = ON)'
  19.  
  20. BEGIN TRY
  21. EXEC sp_executesql @cmd
  22. END TRY
  23. BEGIN CATCH
  24. BEGIN
  25. SET @cmd = 'ALTER INDEX ALL ON ' + @database + '.' + @schema + '.'
  26. + @table + ' REBUILD WITH (ONLINE = OFF)'
  27.  
  28. EXEC sp_executesql @cmd
  29. END
  30. END CATCH
  31. FETCH curtable INTO @schema, @table
  32. END
  33. CLOSE curtable
  34. DEALLOCATE curtable
  35. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement