spa*_*k75 3 sql-server rollback
我正在将索引应用于具有存档数据的数据库。我知道这需要很长时间。当我昨晚离开它时,它正在运行 14 小时。今天早上我回到它,企业经理告诉我它已经失去了连接。
在检查服务器上的活动监视器时,我可以看到任务。它的状态是 SUSPENDED,等待类型为 IO_COMPLETION。
有没有办法恢复这个或杀死它并重新开始?
我跑了,sp_who2
但它没有被任何其他活动阻止并且状态为 ROLLBACK。如果我然后运行kill 61 with statusonly
,SQL 会告诉我;
无法获取状态报告。进程 ID 61 的回滚操作不在进行中。
只是寻找关于我下一步可以做什么/尝试的选项。谢谢。
仅以状态杀死 61。SQL 告诉我,无法获取状态报告。进程 ID 61 的回滚操作不在进行中
似乎 Kill With statusonly 报告,仅当会话被手动终止时
来自 Paul Randal :(重点是我的)
仅当会话 ID 或 UOW由于先前的 KILL session ID|UOW 语句而当前正在回滚时,KILL WITH STATUSONLY 才会生成报告。
所以在你的情况下,操作没有被终止..所以你将无法跟踪状态
您可以使用 Sys.dm_Exec_requests 获取回滚估计时间
select percent_complete,estimated_completion_time,* from
sys.dm_exec_requests
where status like '%rollback%'
Run Code Online (Sandbox Code Playgroud)
进一步恢复部分,您可以恢复如果您使用的是索引重组而不是重建
有关 reorg 与重建的更多信息(我在 MSDN 上阅读了相关信息,但现在无法找到)
重新组织页面级别的工作,因此如果您碰巧在中间停止,它将回滚该特定页面,即 8kb 而不是整个页面。
因此,如果您不使用 Reorg,唯一的选择是重新启动索引重建,然后重新开始
IO_COMPLETION
. 您正在等待数据写入磁盘。任务生命周期的其他部分:
跑步:正是它听起来的样子。您的任务正在进行中。
Runnable:您的任务正在等待获取 CPU。
睡眠:命令已完成,正在等待另一个命令
Pending:您的任务正在等待一个线程
还有一些Background
任务,但您通常不必担心这些。
之前工作中的一个简短轶事:其中一位开发人员决定在 9 TB 数据库中的 2 TB 表上推出索引。它运行了整个周末,在周一早上的数据处理工作之前没有完成。我们杀死了它,但是回滚需要很长时间,因此恢复数据库的副本以进行工作会更快。
归档时间: |
|
查看次数: |
17884 次 |
最近记录: |