0

我是一个新的“意外” DBA,我目前正在尝试解决由我在支持前端应用程序的生产数据库上创建的触发器引起的锁定。

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

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

Lock request time out period exceeded. 

然后我尝试手动删除它,但它在 0% 时失败,还剩 0 秒。我检查了运行时间最长的事务,然后尝试在活动监视器中终止该进程。从那时起,该过程一直停留在“任务状态:运行和命令:KILLED/ROLLBACK”。经过一番谷歌搜索后,听起来我有两个选择。

选项 1:在 SQL 服务器上重新启动 DTC.... 不起作用,仍然卡住。选项 2:重新启动 SQL 服务。哦哦。

这是我第一次不得不做这样的事情,我很紧张成为办公室里唯一的 SQL 人。请任何人都可以让我知道重新启动服务的潜在影响是什么,就数据丢失和对前端用户的影响而言?我最好在营业时间后等待重新开始吗?

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

干杯

4

1 回答 1

0

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

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

作为旁注,检查锁定\阻塞进程。问题“超过锁定请求超时时间。”中的消息似乎表明发生了锁定/阻塞。

于 2015-07-02T15:20:05.600 回答