掌握数据库DB STARTUP问题

时间:2010-08-02 05:46:35

标签: sql sql-server sql-server-2008 locking

我有一个SQL Server 2008数据库,我对这个数据库有疑问,我不明白。

导致问题的步骤是:

  • 我运行了一个SQL查询来从另一个名为authorAff
  • 的表中更新名为authors的表
  • 作者表是123,385,300条记录,而authorsAff表是139,036,077
  • 查询执行了大约7天但没有完成
  • 我决定取消查询,以另一种方式进行。
  • 我运行查询的连接突然断开连接,因此数据库开始恢复,直到查询取消
  • 由于电力问题,服务器多次关闭
  • 数据库用了大约两天时间才恢复。
  • 现在我运行此查询

    选择TOP 1000 * 来自作者(READUNCOMMITTED)

它执行并返回结果但是当我删除WITH(READUNCOMMITTED)提示时,它被主数据库上运行的进程锁定,该进程仅出现在具有命令[DB STARTUP]的活动监视器上,并且没有显示结果。 那么什么是DB STARTUP命令,如果这是一个问题,我该如何解决呢?

提前谢谢。

1 个答案:

答案 0 :(得分:4)

我怀疑您的用户数据库仍在尝试回滚您取消的交易。一般的经验法则表明,中止的事务需要花费大约相同的时间或更多时间才能运行。

即使SQL Server停止并启动,也无法避免回滚。

您可以运行查询WITH(READUNCOMMITTED)的原因是它忽略了与正在回滚的事务关联的锁。您的查询结果被认为是不可靠的,但具有讽刺意味的是,结果可能是您希望看到的,因为阻止过程是回滚。

最好的解决方案是等待它,如果你能负担得起的话。您可能能够找到阻止阻塞过程的方法,但是您应该关注数据库的完整性。