有没有办法查看DBCC SHRINKFILE
语句的进度?
这是我运行它的方式
dbcc 收缩文件('main_data',250000)
我在 SQL Server 2005 和 2008 上都运行上述语句。
[更新] 这是我为检查进度和正在运行的文本而运行的查询。
select T.text, R.Status, R.Command, DatabaseName = db_name(R.database_id)
, R.cpu_time, R.total_elapsed_time, R.percent_complete
from sys.dm_exec_requests R
cross apply sys.dm_exec_sql_text(R.sql_handle) T
你检查过 sys.dm_exec_requests 中的 percent_complete 吗?
Aaron 的回答是正确的,但我想提醒您不要运行数据文件收缩,因为它会导致可怕的性能问题。我曾经拥有收缩代码,所以我知道我在说什么。查看我昨天写的这篇博文,它向您展示了我的意思,并建议如何在不实际进行收缩的情况下进行收缩:为什么不应该收缩数据文件
希望这可以帮助!
PS 还有一件事要检查它是否需要很长时间并且 percent_complete 没有增加 - 寻找阻塞。Shrink 将无限等待它需要的锁。
下面的查询将显示如下结果: track dbcc shrink status
为任何感兴趣的人添加我自己的版本,这会将毫秒时间列转换为更易读的分钟和秒。
或者您可以只运行 exec sp_who3。