2013-04-25 32 views
2

執行sql插入時,可能會失敗,因爲其中一個字段將無法驗證。有多種驗證可能會失敗。比如我最近看到:爲什麼SQL Server不告訴我哪個字段導致錯誤?

[22003] [Microsoft][ODBC SQL Server Driver][SQL Server]Arithmetic overflow error converting varchar to data type numeric. (8115) 

[22001] [Microsoft][ODBC SQL Server Driver][SQL Server]String or binary data would be truncated. (8152) 

這是很令人沮喪的是要尋找麻煩的領域,當你有很多列,並在有準備語句的時間插入多行。爲什麼Sql Server不能告訴我哪個字段有問題?請注意我沒有看如何解決這些個別錯誤,而是一個更根本的問題,爲什麼沒有實現更好的錯誤消息。

編輯:Why can't SQL Server tell me which column is causing the error這是被標記爲重複關閉並不實際回答問題。那裏接受的答案並沒有解決這個問題,所以在它上面放棄賞金將無濟於事。

+0

是的。沒有人回答這個問題,但答案被接受了(由於錯誤的imo)。作者寫道:「編輯:謝謝你們的幫助,但沒有人真正回答過這個問題。所有的RDBMS都會發布類似的錯誤消息或者更有幫助嗎?它的2012年......可能有數千個列的試驗和錯誤應該已經死了! 「 – Roger 2013-04-25 14:37:20

+0

這些問題可能相似,但「爲什麼SQL Server不能告訴我哪個列導致錯誤」實際上沒有得到回答。爲什麼要投票呢? – Roger 2013-04-25 14:46:00

+0

不是downvoter,但通常的協議將是在鏈接上的問題,而不是提出一個新的問題,引起注意的問題上的賞金。 – LittleBobbyTables 2013-04-25 14:49:52

回答

1

那麼SQL是一個基於集合的引擎,集合的邏輯是布爾值。無論數據是在一個集合還是沒有。是/否有很多花哨的技巧用於簡單地將您的設置返回到客戶端。我的猜測是,如果您開始檢查集合中的單個值,那麼您會在頭頂上表現得如此糟糕,以至於它會讓客戶爭相爭取rdbms。是的,當插入失敗時它很煩人,但是將數據分成一半以尋找異常的位置會讓你很快失望。然後,您可以改進您的設計方法以防止問題再次發生。 (較少馬虎,更強大)

但是你必須要求SQL開發團隊的somone作出明確的答案,我猜他們會給你三個理由:性能,性能和當然可擴展的性能。 HTH

相關問題