> >-- list fragmented indexes >SELECT ps.database_id, ps.OBJECT_ID, ps.index_id, AA.Name, b.name, ps.avg_fragmentation_in_percent >FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS ps > INNER JOIN sys.indexes AS b ON ps.OBJECT_ID = b.OBJECT_ID AND ps.index_id = b.index_id > INNER JOIN sys.tables as AA ON b.OBJECT_ID=AA.OBJECT_ID >WHERE ps.database_id = DB_ID() AND ps.avg_fragmentation_in_percent>30 AND NOT b.name IS NULL >ORDER BY 6 DESC >GO > >--rebuild fragmented indexes > DECLARE @lorsData CURSOR > DECLARE @lcTABNAME VARCHAR(128), @lcNAME VARCHAR(128), @lfDFG FLOAT > SET @lorsData=CURSOR LOCAL READ_ONLY FOR > SELECT AA.Name, b.name,ps.avg_fragmentation_in_percent > FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS ps > INNER JOIN sys.indexes AS b ON ps.OBJECT_ID = b.OBJECT_ID AND ps.index_id = b.index_id > INNER JOIN sys.tables as AA ON b.OBJECT_ID=AA.OBJECT_ID > WHERE ps.database_id = DB_ID() AND ps.avg_fragmentation_in_percent>30 AND NOT b.name IS NULL > ORDER BY 3 DESC > > OPEN @lorsData > WHILE 0 = 0 BEGIN > FETCH NEXT FROM @lorsData INTO @lcTABNAME, @lcNAME, @lfDFG > IF @@FETCH_STATUS <> 0 BREAK > > BEGIN TRY > EXEC('ALTER INDEX ['+@lcNAME+'] ON ['+@lcTABNAME+'] REBUILD WITH(ONLINE = ON)') > PRINT CAST(@lfDFG AS VARCHAR(30))+' ALTER INDEX ['+@lcNAME+'] ON ['+@lcTABNAME+'] REBUILD /*WITH(ONLINE = ON)*/' > END TRY > BEGIN CATCH > PRINT 'FAILED: '+@lcTABNAME+' '+@lcNAME > END CATCH > > END > CLOSE @lorsData > DEALLOCATE @lorsData >GO >>
FAILED: invntory inv_descrCan you think of what I or he maybe doing wrong?