首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQLSERVER -锁错误

SQLSERVER -锁错误
EN

Stack Overflow用户
提问于 2016-06-23 10:51:58
回答 1查看 2.7K关注 0票数 0

我在运行proc时出错了。通过SSIS..。错误:

执行SQL错误:执行查询"Exec clk.id_Process?,?,?“失败:“此时Server数据库引擎的实例无法获得锁资源。当活动用户较少时,请重新运行您的语句。请数据库管理员检查此实例的锁和内存配置,或检查长期运行的事务。”可能的失败原因:查询出现问题、"ResultSet“属性未正确设置、参数未正确设置或连接未正确建立。

我试图通过加入来找出这个问题。

代码语言:javascript
运行
复制
"sys.dm_exec_sessions AS s
INNER JOIN sys.dm_exec_requests AS r ON r.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st"

并发现它在更新表时被结构化了。

代码语言:javascript
运行
复制
UPDATE ta        
        SET ta.id =
        CASE 
            WHEN ta.id=tmp.MergeoldId THEN tmp.MergenewId
            ELSE ta.id
        END,
        ta.Id2=
        CASE
         WHEN ta.Id2=tmp.MergeoldId THEN tmp.MergenewId
         ELSE ta.Id2
        END,
        ta.Id3=
        CASE
            WHEN ta.Id3=tmp.MergeoldId THEN tmp.MergenewId
            ELSE ta.Id3
        END
        --SELECT ta.id ,ta.Id2,ta.Id3, tmp.MergeoldId,*
        FROM tel.TranAssemble ta WITH (ROWLOCK)
        INNER JOIN clk.id_Process tmp WITH (NOLOCK) on (ta.id = tmp.MergeoldId OR ta.Id2=tmp.MergeoldId OR ta.Id3=tmp.MergeoldId )
        WHERE tmp.Id >= @MinId AND tmp.Id < @MINID +  @BatchSize

有解决办法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-06-23 11:10:35

这些问题是由于内存压力,因为锁管理器将不使用Server可用内存的60 %以上

Server无法获得锁定资源。造成这种情况的原因有以下任何一种: Server无法从操作系统中分配更多内存,原因要么是其他进程正在使用它,要么是因为服务器正在使用配置了最大服务器内存选项的操作。 锁管理器将不会使用Server可用内存的60 %以上。

通常,SQL server对所有查询(甚至选择)都使用锁,并且对其持有的每个锁(96字节)使用少量的内存。

根据上述知识,您可以使用以下查询开始故障排除。

代码语言:javascript
运行
复制
--this gives you currently running queries holding more locks
select * from sys.dm_exec_requests ec
cross apply
(SELECT request_session_id, COUNT (*) num_locks
FROM sys.dm_tran_locks trn
where ec.session_id=trn.request_session_id
GROUP BY request_session_id 
)b

--this gives you locks for allsessions
SELECT request_session_id, COUNT (*) num_locks
FROM sys.dm_tran_locks trn
where ec.session_id=trn.request_session_id
GROUP BY request_session_id 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37989528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档