我是一个新的“意外”DBA,我正在尝试解决由我在支持前端应用程序的生产数据库上创建的触发器引起的锁定。
我创建了一个触发器,然后我决定最好创建一个工作来代替工作,所以试图删除object explorer中的触发器。删除失败,显示消息:
An exception occurred while executing a Transact-SQL statement or batch.
Lock request time out period exceeded.
然后我尝试手动丢弃它,它在0%时失败,0还剩下去了。我检查了运行时间最长的事务,然后尝试在活动监视器中终止该进程。从那以后,这个过程一直停留在“任务状态:运行和命令:杀死/回滚”。经过一些谷歌搜索,听起来我有两个选择。
选项1:在SQL服务器上重新启动DTC ....没有工作,仍然卡住了。 选项2:重新启动SQL服务。糟糕,
这是我第一次做这样的事情而且我很担心成为办公室里唯一的SQL人员。在数据丢失和对前端用户的影响方面,请任何人都能告诉我重新启动服务的潜在影响吗?我最好等到工作时间后重新开始?
非常感谢,如果我第一次提出这个问题,我会道歉。
干杯
答案 0 :(得分:0)
等待。它正在回滚,必须完成回滚。不要重新启动SQL,这只会导致在重新启动后继续回滚,可能是数据库脱机。
如果这是一个生产系统并且您确实退回了数据库,那么您的用户界面的所有用户都会遇到奇怪而奇妙的错误。除非您的应用程序能够处理它,否则您的用户将获得糟糕的体验,然后您将开始接听老板的电话....
作为旁注,检查锁定\阻塞过程。问题“锁定请求超时时间超出。”中的消息似乎表明存在锁定/阻塞。