我有一个远程 SQL Server 连接,正在使用 begin 和 commit tran 命令更新某些值。然而,在它完成之前,查询被取消并且表被锁定。经过多次尝试重新启动数据库后,表仍然被锁定,然后我们重新启动了机器。
现在情况更糟了,我们甚至无法从 Management Studio 连接到服务器。当我尝试连接时,出现了几个不同的错误,例如连接超时、服务器未知,最常见的错误是无法生成 SSPI 上下文。
这不可能是域问题,因为我之前在同一个网络上用同一个用户帐户就能正常连接。有人知道如何解决这个问题吗?
答案1
为什么查询被取消?这是一个大查询吗?查询取消后采取了哪些操作?重新启动前等待了多长时间?
我之所以问这个问题,是因为当查询被取消时,数据库会立即开始回滚事务。如果查询在取消之前进行了大量更改,则可能需要很长时间才能回滚(这解释了为什么表会被锁定)。这时情况通常会变得越来越糟,因为开发人员会不耐烦并执行诸如重新启动服务/服务器之类的操作。然后,当数据库引擎启动时,数据库进入恢复模式,回滚重新启动期间打开的所有事务。
您可以远程访问机器吗?如果可以,请检查服务以验证数据库引擎是否正在运行。如果可以,您可以通过管理工作室(远程访问)连接到本地主机。如果不可以,请启动它。如果无法启动它,请尝试以单用户模式启动。
答案2
记住什么@brian 说,您还应该做的另一件事是确保您最近有一个好的备份。然后再备份一次以确保万无一失。