簡體   English   中英

存儲的proc失敗,出現SQL錯誤3621,在ssms中運行良好,並且如果刪除並重新創建

[英]Stored proc failing with SQL error 3621, runs fine in ssms and if dropped and recreated

我有一個存儲的proc,由.net應用程序調用並傳遞一個xml參數-然后將其切碎並形成查詢的WHERE部分。

因此,在我的查詢中,我將查找具有XML中包含的documentType匹配的記錄。 該表包含的文檔類型為C的記錄多於P。

無論XML是否為documentType包含P或C,查詢都可以在一周內正常運行。 然后,它停止為documentType C工作。

我可以在沒有錯誤的情況下從SSMS運行兩個查詢(使用探查器捕獲進行的確切調用)。 Profiler顯示,從應用程序運行時,documentType C查詢開始一條語句,然后在該語句結束之前和完成查詢的未完成步驟之前完成。

我運行了另一個探查器會話以捕獲所有錯誤和警告。 我只能看到錯誤3621-該語句已終止。 沒有其他與此錯誤相關的錯誤,唯一需要注意的其他事情是更改數據庫上下文的警告。

我檢查了SQL日志和擴展事件,什么都找不到。 我認為查詢與數據內容無關,因為它在SSMS中運行沒有問題-我還檢查了WHERE子句中其他字段的范圍值,那里沒有異常或不正常的情況。 我也知道,如果我刪除並重新創建該過程(即完全相同的代碼),該問題將得到解決。

有誰知道我如何追蹤導致3261故障的錯誤? 分析不會進行此操作。

在某些情況下,SQL Server會引發兩條錯誤消息,一條是實際錯誤消息,准確說明正在發生的事情,另一條錯誤消息是3621,表明The statement has been terminated

有時,當您從腳本中調用SQL查詢或對象時,第一條消息會特別丟失。

我建議您遍歷每個SQL語句並分別運行它們。

另一個猜測是您的客戶端出現超時錯誤。 如果您的SQL Server跟蹤上有Attention event ,則可以遵循超時錯誤消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM