我的查詢一段時間(輸出行)運行,然後停止,以示數出:如何識別導致致命錯誤的查詢結果中的行?
消息8115,級別16,狀態8,第5行算術溢出錯誤 轉換INT到數據類型數值。
這並不告訴我哪一行(由FROM子句形成的行集(而不是SQL查詢中的哪一行)導致此錯誤。
我使用了去查詢選項的舊技巧,並取消選中「set arithabort」和「set ansi_warnings」,這會導致查詢繼續運行,並將NULL放入違規單元格中。
問題是結果集可以在很多地方正確地有一個NULL,所以這沒有幫助。 (和錯誤消息同樣模糊:「發生算術溢出。」)
我試圖弄清楚這一點 - 我曾經想過使用遊標或循環,但每個都有問題。
當你得到這樣的錯誤時,你們是怎麼做的,以便找出哪一行導致它?
更新:感謝以下有用的建議;他們很好,工作很好。但是,在遇到麻煩之前(此查詢中有很多列),我只是想查看導致錯誤的行。幸運的是,我猜想查詢結果集中的最後一行是錯誤發生之前的行。當我生成查詢以查看該行下面的數據(當然不包括計算字段)時,我立即注意到其中一個INT字段中的值大於正常值。
這似乎是一個很好的第一步,然後再去編寫下面的查詢之類的問題之前 - 但是,謝謝,我會保存這些,以後肯定需要它們,當問題不是在看到有問題的數據。
也許你可以在問題中添加查詢。 –
它很龐大 - 並且通過邏輯來查找錯誤似乎是一種痛苦 - 似乎應該有辦法快速找到有問題的行。 – ScottEdwards2000
您是指查詢中的行(如「行5」)還是表中的行? –