Declare @i int
Begin tran    
    insert into TAB1 select * from 
    TAB2 where DateTime<@BKDateTime
    while Exists(select top 1 0 from TAB1 where DateTime<@BKDateTime)
    begin
        Delete top (1000) from TAB2 where datetime<@BKDateTime
        Set @i=@i+1
        Print Convert(varchar(10),@i)
    end    
commit tran

解决方案 »

  1.   

    应该是比较正常的事情。删除命令进行时,删除一次,PRINT一次,PRINT由SSMS来完成,可以说一个是客户端输出(SSMS中输出),一个是服务器端执行(删除操作)
    数据量大时,系统来不及响应SSMS,这比较正常。就像你有时开个IE,里面加载个大点的东西,然后IE停止响应,过一会就好了一样。
      

  2.   

    1.1亿的数据量,而且所有的处理在一个事务中,可想而知整个操作结束后,数据库的日志将暴涨到什么程度。2.建议:如果要删除TAB2表80%以上的数据,可以将保留的数据先另存到其他表中,然后对表进行truncate table操作,
      然后再讲保留的数据导回来。