SQL查询在更新不同记录期间不返回行

时间:2015-05-21 08:22:24

标签: c# sql sql-server isolation-level

背景: 我有两个正在执行某种复制操作的程序,它们从两个不同的系统读取数据(一个检查单独的SQL Server,一个从外部REST API获取数据),它们将结果放入我们系统的单个表中。数据集和记录很小,这些程序循环20和60秒。 使用datetimestamp逻辑(例如最近3天)请求数据,然后在使用表中的唯一引用之前检查是否已处理这些请求。 在我们插入这个新数据之前,我们查询是否存在引用,如果是,则忽略如果不插入记录。 这两个项目的工作做得很好。

然后我们有一个用户C#win表单程序来处理这些数据,一个操作从程序而不是存储过程运行SQL事务。其中一项任务是更新上表中的状态标志。

问题在于间歇性地我们似乎处理了一个重复的引用号,这意味着在表上执行SELECT时上面的程序没有获取引用。

我们已经发现,只有当我们从程序运行程序并且重复记录与更新数据集无关时才会发生这种情况。这意味着正在更新的数据与业务逻辑(不是相同的记录)无关。

隔离级别是事务的默认C#选择。

问题: 1)当事务正在更新状态记录(它将锁定)时,为什么在执行读取时我们会在同一个表中丢失不相关的记录?

0 个答案:

没有答案