确定正在执行的T-Sql脚本的状态

时间:2009-05-25 08:54:47

标签: tsql

我正在运行一个T-SQL脚本来将旧数据迁移到我们的新数据库。这需要很长时间才能完成!现在它超过2个半小时。有没有办法检查执行脚本的状态?

4 个答案:

答案 0 :(得分:1)

你可以在新数据库上不断运行“select count(*)from table_being_populated”并将其与旧数据库中的计数进行比较,并观察它在脚本运行时增长,以了解当前有多少数据在新的数据库中。

答案 1 :(得分:0)

一种简单的方法是在脚本中间隔包含print个语句。

答案 2 :(得分:0)

RAISERROR ('marker', 10, 1) WITH NOWAIT

这为客户提供即时反馈:PRINT可能不会。严重性10也意味着它是一个警告,因此不会使代码失效。

答案 3 :(得分:0)

你是不是移动数据是某种光标的吗?如果您一次移动一条记录,则可能需要数天或数月,具体取决于数据量。现在,如果要移动大量数据,您可能需要一个循环,但仍然不是一次一个光标,而是一个处理一批记录的循环。插入一百万条记录通常会更快,一次1000条记录,而不是一次百万条记录。

如果当前所有事务都在一个事务中,那么如果您需要停止并重新考虑这个long_running进程,您可能也会遇到问题,因为它必须回滚所有内容。这可能需要很长时间。

你没有用日志记录或其他方式来轻松观察进度,我认为监控插入的表上的计数(*)的建议是一个很好的建议(可能你只是真实的)选择)。只需确保您没有使用锁定,否则在插入完成之前结果可能不会返回。还要检查是否有阻塞发生,通常当这样的事情花费太长时间时,其他一些进程就会阻止它。