相关疑难解决方法(0)

尝试查看数据库层次结构时出现“超出锁定请求超时期限”错误

我在使用数据库时遇到问题。

  1. 我可以运行基本查询,尽管比正常情况慢得多。

  2. 当我尝试在 SSMS 对象资源管理器中查看表、视图或过程的层次结构树时,我得到lock request time out period exceeded.

  3. 我在此数据库中的对象上运行的 SSRS 报告不再完成。

  4. 与存储在此数据库中的过程相关的作业也不会运行。

我尝试使用sp_who2查找并终止数据库上的所有连接,但这并没有解决问题。

这里发生了什么?我该如何解决这个问题?

sql-server-2008 sql-server

26
推荐指数
4
解决办法
15万
查看次数

SQL Server 2008 T-SQL 选择挂起,但未死锁

这是一个非常奇怪的问题,所以请耐心等待。我有一个存储过程,可以进行一些繁重的处理。当它运行良好时,它通常需要几分钟的时间,具体取决于服务器负载,但有时它似乎卡住了。

我查看了 sp_who2 的结果,我看到该进程没有被阻塞,它仍然列为“RUNNABLE”,但磁盘 IO 中的值保持不变。一旦进程进入这种状态,它就永远不会完成。如果我终止进程并重新执行存储过程,我通常会得到相同的结果。

有时重新执行存储过程是可行的,但我最终不得不重新启动 SQL Server。不理想......重新启动后,存储过程按预期执行。有没有人遇到过这样的问题?任何建议将不胜感激。

更多的上下文。我正在执行的存储过程如下所示:

delete
from table1

insert into table1
select columns
from 
(
    select columns
    from giant_table_1 WITH (NOLOCK)
    where condition
    group by columns

    UNION

    select columns
    from giant_table_2 WITH (NOLOCK)
    where condition
    group by columns
)
where condition

more crud on table1
.
.
.
Run Code Online (Sandbox Code Playgroud)

如果我将一些日志语句插入到存储过程中,我可以看到它挂起时它挂在插入/选择上。想知道这是否可能是 NOLOCK 语句的奇怪结果。我们(我的意思是我的老板 :))添加了 nolock,因为 Giant_table_1 和 Giant_table_2 不断变化。如果没有 nolock,我们的 sproc 会被其他长时间运行的进程阻塞很多,反之亦然。

提前致谢!

sql-server-2008 stored-procedures locking

4
推荐指数
1
解决办法
1万
查看次数