我们正在执行第 3 方数据的迁移,但它已挂起。
当我们调查时,我们看到 SPID 38(系统/后台 SPID)是试图进行迁移的阻止用户 SPID。不幸的是,来自sp_whoisactive(或什至活动监视器)的 SQL_Text 对于 SPID 38是NULL。wait_info是PREEMPTIVE_OS_GENERICOPS
.
有没有办法告诉 38 试图做什么?
它使用的是第 3 方提供给我们的基于 Windows 的工具。我对数据进行了备份,并将其还原到这台新服务器上(这样数据库及其内容就可以访问并正常工作了)。然后我们运行这个工具来升级到他们的新版本软件,这就是我们获取块的地方。
sp_WhoIsActive @get_locks = 1
返回一个非常长的 XML(4k 个字符太长而无法发布)。
我决定查看sys.sysprocesses表,发现
FT_CRAWL
(查看 CMD 字段)正在阻塞 spid 上运行。我想恢复的数据库会立即开始爬行?无论如何,我关闭了 Full Text Daemon,阻止停止了。我们完成了升级,然后重新打开守护进程,一切都很好。
我已通过电子邮件向 Adam Mechanic 发送电子邮件,以查看他的sp_WhoIsActive中是否使用了 CMD 字段,因为我认为这在这种情况下会非常有益。