使用T-SQL脚本挂起来优化重建索引

时间:2013-03-19 09:43:29

标签: sql tsql agent

我的T-SQL脚本存在问题,该脚本作为SQL Server代理作业运行。 使用以下代码。

SET NOCOUNT ON 
DECLARE @Table varchar(512) 
DECLARE @Index varchar(512) 
declare @Query nvarchar(512) 
DECLARE cur CURSOR FOR SELECT SO.name, SI.name FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'LIMITED')inner join sys.objects SO on SO.object_id=sys.dm_db_index_physical_stats.object_id inner join sys.indexes SI on SI.index_id=sys.dm_db_index_physical_stats.index_id and         SI.object_id = sys.dm_db_index_physical_stats.object_id WHERE avg_fragmentation_in_percent > 10.0 AND sys.dm_db_index_physical_stats.index_id > 0 AND SO.name not like '%ReminderRun%'
        OPEN cur 
FETCH NEXT FROM cur INTO @Table, @Index 
WHILE @@FETCH_STATUS = 0 
 BEGIN 
set @Query = 'ALTER INDEX [' + @Index + '] ON [' + @Table + '] REBUILD'
print @Query 
EXEC sp_executesql @Query 
FETCH NEXT FROM cur INTO @Table, @Index 
        End 
        Close cur 
        DEALLOCATE cur 
SET NOCOUNT OFF

我自己没有编写代码,因为我不是一个程序员,但每次偶尔工作都会挂起,我必须手动停止它,因为它会锁定数据库。

有谁能告诉我这个脚本到底做了什么,也许有人可以在脚本中看到导致它挂起的东西?

亲切的问候,

萨沙

0 个答案:

没有答案