起初我想我应该去看我的医生,对我的大脑进行核磁共振检查。但是,我看到的结果被第二个程序员证实了。运行相同的确切 SQL 在不同的时间给我不同的结果!这没有道理。这是我正在运行的(更改表名以保护无辜者)...
declare @customerid int;
declare @locationid int;
declare @reportdate datetime;
set @customerid=2063;
set @locationid=101;
set @reportdate=getdate();
select i.InvoiceDate as [Date], ... from Invoice i (nolock) ...
UNION ALL select ... from Remit e (nolock) ...
UNION ALL select ... from [Rec] r (nolock) join TrTypes t (nolock) on ...
Remit
两个 select/union all 是相同的,但有时第二个在第一个显示它们时不会从表中返回记录。而且...有时第一个也不会拉动它们。我将这些查询放入SQL Server Management Studio
并继续点击F5
......有时我得到正确的结果,有时我没有。
此外,当我删除UNION ALL
s 并只运行查询时,不会从Remit
.
这可能是锁定问题吗?
此查询来自C#
生成详细报告的程序,它从不返回汇款记录。还有另一个程序可以从Remit
表中创建摘要记录,它总是从类似的查询中返回记录……这就是为什么我必须查看详细程序/报告的原因。
想法?