2013-06-12 74 views
0

我有一個ERP系統,我試圖進行調試,並且在某個時候從前端發出命令時,一組查詢在SQL Server中執行。DELETE語句不執行的情況

在這組查詢中,有一條DELETE語句應執行並從表中刪除某些記錄,但由於某些原因,這些記錄不會被刪除。

我已經嘗試了幾種情況來找出爲什麼這種情況不會發生。

  1. 我試過用前端命令和從SQL Server查詢的顯式後端集發出的大型查詢來鎖定表。
  2. 我試着檢查用戶對錶格的訪問,這是正確的。
  3. 我也考慮到網絡連接的問題,但是因爲在這個DELETE聲明之前/之後執行的同一集合中有更多的聲明,所以我排除了這一點。

還有什麼我可以看看,或者如果你知道DELETE聲明不執行的任何可能性?

任何建議是有幫助的,因爲我試圖複製這個問題,我沒有想法。

UPDATE:

按照您的要求,這是查詢

DELETE 
FROM Payments 
WHERE transactionID = 5005281 

更新2

我從前端發出命令時運行分析器所以如果一個DELETE語句出現在查詢中,那麼它不會被應用程序邏輯所推斷。此外,沒有調用存儲過程來懷疑記錄是在DELETE後重新插入的。

+0

檢查數據庫中存在哪些關係。如果你有PK_FK情侶,刪除將不起作用 – Terry

+0

檢查表上是否存在「ON DELETE」觸發器,以防止刪除。 –

+0

另外,你可以'將DELETE查詢轉換成一個類似的SELECT查詢,並使用相同的過濾等'看看你是否得到任何結果? – Kaf

回答

4

您需要確定是否:

  • 的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當然,良好的OLE」 PRINT

我們顯然無法猜測,您需要顯示一些代碼。

+0

我在前端執行命令時運行了分析器,因此如果在profiler中存在DELETE語句,則排除應用程序邏輯問題(我也檢查過是否重新插入了記錄)。 –

+2

StmtCompleted事件顯示受影響的行數。是否爲0,DELETE語句? –