Sql Server 2005 - 无法获取LOCK资源

时间:2014-03-03 10:47:30

标签: sql sql-server sql-server-2005 database-locking

观察到的问题和error message是:

The instance of the SQL Server Database Engine cannot obtain a LOCK resource at this time. Rerun your statement when there are fewer active users.Ask the database administrator to check the lock and memory configuration for this instance, or to check for long-running transactions

环境:Windows Server 2003标准版上的SQL Server 2005标准版。在VM上虚拟化 - 具有8 GB RAM 自动应用程序正在处理数据 - 读取原始数据并将结果写入数据库。这些应用程序收到错误消息,然后崩溃。 (还安排了数据库备份和索引维护作业。)

在使用sql server 2005企业版和Windows 2003企业版的类似系统上从未观察到同样的错误。

我已经在网上搜索并找到了一些答案。但是例如 SQL Server cannot obtain a LOCK resource at this time - What to do? 在我的案例中没有帮助

一位消息人士建议检查:

SELECT request_session_id, COUNT (*) num_locks
FROM sys.dm_tran_locks
GROUP BY request_session_id 
ORDER BY count (*) DESC

一次会议提出了10次。

内存和锁定设置均为默认设置。

我目前的想法是清除大部分旧的数据并将其删除。

有没有人有任何其他想法如何处理锁资源问题?究其原因是什么? SQL Server标准版是否允许更少的资源 - 与sql server版本相关的问题是什么?如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

自动收缩功能在数据库目录上有多个锁。 重建主键后,自动收缩还会破坏表的主键。

关闭自动收缩功能已解决问题