由于 SPID 停留在 运行、KILLED/ROLLEDBACK 状态而重新启动

Restarting due to SPID stuck on RUNNING, KILLED/ROLLEDBACK status

我是一名新的 "accidental" DBA,我目前正在尝试解决由我在支持前端应用程序的生产数据库上创建的触发器引起的锁定问题。

我创建了一个触发器,然后我决定最好创建一个作业来完成这项工作,因此尝试在对象资源管理器中删除触发器。删除失败并显示消息:

An exception occurred while executing a Transact-SQL statement or batch. 

Lock request time out period exceeded. 

然后我尝试手动删除它,但在 0% 时失败,还剩 0 秒。我检查了最长的 运行 事务,然后试图在 activity 监视器中终止进程。此后进程一直停留在"Task State:RUNNING and Command:KILLED/ROLLBACK"。经过一番谷歌搜索后,听起来我有两个选择。

选项 1:在 SQL 服务器上重新启动 DTC...。没有用,仍然卡住了。 选项 2:重新启动 SQL 服务。呃哦。

这是我第一次不得不做这样的事情,作为办公室里唯一 SQL 的人,我很紧张。就数据丢失和对前端用户的影响而言,谁能告诉我重启服务的潜在影响是什么?我最好等到下班后重新启动吗?

谢谢,如果我第一次问这个问题很糟糕,我深表歉意。

干杯

等等。它正在回滚并且必须完成回滚。不要重新启动 SQL,这只会导致在重新启动后继续回滚,可能会使数据库脱机。

如果这是一个生产系统并且您确实弹跳了数据库,那么您的用户界面的所有用户都会遇到奇怪而奇妙的错误。除非您的应用程序可以处理它,否则您的用户将获得糟糕的体验,然后您将开始接到来自老板的 phone 电话....

作为旁注,检查 locking\blocking 个进程。问题 "Lock request time out period exceeded. " 中的消息似乎表明正在发生 locking/blocking。