Excel锁定表中的SQL查询?

问题描述 投票:0回答:1

我遇到了一个问题,即无法对数据库中的单个表执行任何查询。桌子陷入了完全僵局。我检查了sp_whoisactive的答案,然后发现了以下内容。

Results of sp_whoisactive

此会话ID为172的表上的简单SELECT,正在等待会话ID为478的表上的DELETE查询,正在会话ID为207的表上等待INDEX REORGANIZE对于此表上具有会话ID 598的简单SELECT

[杀死598个会话后,一切立即完成。之后,执行相同的查询将表保持在SSMS单独窗口中的死锁状态仅需2秒钟。我四处询问,此查询由Excel文件执行。显然,我们有许多Excel文件浮动,它们围绕着我们的SQL数据库运行查询。显然,这是非常糟糕的做法,因为可以在内部找到连接字符串,但是对于所有旧版而言,直到修复之前,它都是这种方式。

[谷歌搜索时,我发现实际上是锁定表的lotofresourcesaboutExcel。现在,就我对锁的有限了解而言,如果由会话ID 598执行的查询实际上将锁定表,则它仅应在查询期间进行。而且由于单独运行查询只花了几秒钟,所以我不知道它如何运行超过12个小时。如果我可以相信sp_whoisactive的结果,那就没有其他等待了。那为什么不完整呢?

[在我建议向Excel文件中的每个查询中添加WITH(NOLOCK)之类的信息之前,这只是一个补丁而不是解决方案,我想找出原因,以便将来可以避免。是什么原因导致这种死锁,如何避免死锁?

sql-server excel
1个回答
0
投票

Excel将在查询过程中进行页面锁定,直到查询被释放为止,这基本上是在电子表格关闭时进行的。因此,如果用户整夜或整天打开电子表格,则表将被锁定。我们遇到了同样的问题,我们正在尝试将有问题的电子表格替换为SSRS报告,但是由于Excel文件做了很多SSRS不能做的其他事情,因此工作人员的运气不太好。

© www.soinside.com 2019 - 2024. All rights reserved.