SQL 查询间歇性返回无结果

标签 sql sql-server

我有一个非常直接的选择查询,例如:

SELECT * FROM PWCWarehouse(无锁)WHERE PWCWarehouseID = 4

这个查询被调用了很多次,大多数时候它返回的记录都很好,但偶尔它什么也没有返回,即使记录仍然存在。这可能是什么原因?可能是因为被更新记录的其他进程锁定了吗?我一直在尝试不同的隔离级别,目前有 Isolation level = RepeatableRead 这样应该可以读取 volatile 数据?

这张表只有6条记录,记录不增不减,对这张表的操作只有上面的读取和更新。

知道这里发生了什么吗?

最佳答案

这几乎肯定是锁定问题。

如果您在尝试读取该记录的同时(可能)更新该记录,您应该使用NOLOCK 提示,因为这将允许脏读。

如果记录已删除并正在插入,或已更新但未提交,则使用 NOLOCKSELECT 将看不到它。

关于SQL 查询间歇性返回无结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7122984/

相关文章:

sql-server - 如何使用powershell验证SQL server实例是否正确?

mysql - 我在调用另一个存储过程时遇到困难

php - 没有 catch 就不能使用 try

sql - SELECT UDAF(AGGR()) HAVING 中的奇怪行为

c# - 通过上下文覆盖将基于 EF 的应用程序转换为 Multi-Tenancy

sql-server - 使用 SQL Server 导出向导导出时如何选择表的特定列?

sql - PostgreSQL 反向 LIKE

mysql - 在不插入的情况下获取唯一标识符

c++ - 使用 C++ 和 SQL Native Client 为 SQLPutData 准备的 SQLBindParameter

sql-server - 我想隐藏 SQL Server 数据库中的表