DELETE语句不执行的情况

时间:2013-06-12 09:15:01

标签: sql sql-server debugging

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

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

我尝试了几种情况来弄清楚为什么不会发生这种情况。

  1. 我尝试使用从前端命令和SQL Server的显式后端查询集发出的大型查询来锁定表。
  2. 我试过检查用户对表的访问权限,这是正确的。
  3. 我还考虑了网络连接的问题,但是由于同一组中有更多的语句在此DELETE语句之前/之后执行,我有点排除了这一点。
  4. 我还有什么可以看的,或者你知道DELETE语句没有执行的可能性吗?

    任何建议都有帮助,因为我试图复制这个问题而且我没有想法。

    更新

    根据您的要求,这是查询

    DELETE
    FROM Payments
    WHERE transactionID = 5005281
    

    更新2

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

1 个答案:

答案 0 :(得分:4)

您需要确定是否:

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

要进行问题排查,请查看SP:StmtStarting Event ClassSQL:StmtStarting Event ClassException Event ClassUser-Configurable Event Classsp_trace_generateevent,当然还有好朋友PRINT

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