sql报告3.0死锁

Posted

技术标签:

【中文标题】sql报告3.0死锁【英文标题】:sql report 3.0 deadlock 【发布时间】:2015-07-03 03:43:54 【问题描述】:

当我需要在同一张表上查询两个不同的销售报告时遇到死锁。

对这两个报告的查询是

select * from tableA
inner join tableB on ...
inner join tableC on ...

我的销售报告解决方案

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
select * from tableA
inner join tableB on ...
inner join tableC on ...
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

这是正确的解决方案吗?

我认为销售报告会不准确,因为会有脏读

【问题讨论】:

【参考方案1】:

通常,您不会在同一张表上使用两个SELECTS 导致死锁。你有一些进程写入它吗?这是整个报告代码吗? 您是否使用生产表或它们的复制副本来生成报告?这一切都可能算在内。

我建议您运行 SQL Profiler(服务器端跟踪)来运行跟踪并检查结果。您通常应该找到死锁图,这意味着您可以准确地确定哪个查询在之前运行并与另一个查询发生冲突。

作为一种解决方法,您可以使用您的解决方案,但这只是一种解决方法。您可能有很高的不准确性。

【讨论】:

以上是关于sql报告3.0死锁的主要内容,如果未能解决你的问题,请参考以下文章

更新查询在同一张表上的 Sql 查询死锁

高通sensor库和Linker的死锁问题分析报告

处理及制度与死锁的学习报告

Report Builder 3.0 - 如何使用大型数据集运行此报告?

BizTalk 2020 XSLT 3.0 - 样式表编译期间报告错误

打开查询设计器时,Report Builder 3.0会冻结