Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE PROCEDURE dbo.asp_reindex @database SYSNAME, @fragpercent INT
- AS
- DECLARE @cmd NVARCHAR(max),
- @table SYSNAME,
- @schema SYSNAME
- DECLARE curtable CURSOR FOR
- SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, database_id) SchemaName,
- OBJECT_NAME(object_id, database_id) TableName
- FROM sys.dm_db_index_physical_stats (DB_ID(@database), NULL, NULL, NULL, 'SAMPLED')
- WHERE avg_fragmentation_in_percent >= @fragpercent
- FOR READ ONLY
- OPEN CURTABLE
- fetch CURTABLE into @SCHEMA, @TABLE
- while @@FETCH_STATUS = 0
- BEGIN
- set @cmd = 'ALTER INDEX ALL ON' + @database + '.' + @schema + '.' + @table
- + ' REBUILD WITH (ONLINE = ON)'
- BEGIN TRY
- EXEC sp_executesql @cmd
- END TRY
- BEGIN CATCH
- BEGIN
- SET @cmd = 'ALTER INDEX ALL ON ' + @database + '.' + @schema + '.'
- + @table + ' REBUILD WITH (ONLINE = OFF)'
- EXEC sp_executesql @cmd
- END
- END CATCH
- FETCH curtable INTO @schema, @table
- END
- CLOSE curtable
- DEALLOCATE curtable
- GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement