不执行 DELETE 语句的情况

Rad*_*hiu 1 sql sql-server debugging

我有一个 ERP 系统,我正在尝试调试该系统,并且在某些时候,当从前端发出命令时,会在 SQL Server 中执行一组查询。

在查询集中,有一个DELETE语句应该执行并从表中删除一些记录,但由于某种原因这些记录没有被删除。

我尝试了几种情况来找出为什么不会发生这种情况。

  1. 我尝试使用从前端命令和 SQL Server 的显式后端查询集发出的大型查询来锁定表。
  2. 我尝试检查用户对表的访问权限,结果是正确的。
  3. 我还考虑了网络连接的问题,但因为在该语句之前/之后执行了同一组中的更多语句DELETE,所以我有点排除了这种情况。

还有什么我可以看的吗,或者您是否知道DELETE语句不执行的任何可能性?

任何建议都是有帮助的,因为我正在尝试复制这个问题,但我没有想法。

更新:

根据您的要求,这是查询

DELETE
FROM Payments
WHERE transactionID = 5005281
Run Code Online (Sandbox Code Playgroud)

更新2

我在从前端发出命令时运行了探查器,因此如果DELETE查询中存在语句,则它不会被应用程序逻辑抑制。此外,没有调用存储过程来怀疑记录在 DELETE 之后开始重新插入。

Rem*_*anu 5

您需要确定是否:

  • DELETE 不执行(逻辑流控制问题,它需要另一个 IF 分支...)
  • DELETE 执行但不影响任何行(WHERE 子句或 JOIN 问题)
  • DELETE 执行并出错,并且错误被静默抑制(错误处理问题)
  • DELETE执行但效果回滚(事务管理问题)
  • DELETE 执行但效果由应用程序补偿(应用程序逻辑问题)
  • DELETE 不会执行,因为先前的错误停止了请求(再次出现错误处理问题)
  • DELETE 执行但您的验证不正确 (PBCAK)

要进行故障排除,请查看SP:StmtStarting Event ClassSQL:StmtStarting Event ClassException Event ClassUser-Configurable Event Classsp_trace_generateevent当然还有 good ole' PRINT

我们显然无法猜测,你需要展示一些代码。

  • StmtCompleted 事件显示受影响的行数。对于 DELETE 语句来说,它是否为 0? (2认同)