1

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

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

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

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

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

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

更新:

根据您的要求,这是查询

DELETE
FROM Payments
WHERE transactionID = 5005281

更新 2

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

4

1 回答 1

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

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

于 2013-06-12T09:39:56.663 回答