我沒有尋找我的存儲過程的實際代碼(但無論如何)的幫助,但客戶端向我發送了他的SQL Server 2000數據庫的副本,指出某個特定的proc返回了不正確的結果;我將數據庫恢復到了我的服務器(SQL Server 2008R2)並運行了proc,併產生了正確的結果。請記住,沒有可能導致差異的前端 - 在這兩種情況下,我只需執行proc thru企業經理和管理工作室。您是否曾經使SQL Server 2008返回與SQL Server 2000不同的結果集?
我想知道是否有任何已知的差異,可能有助於/導致此問題?這個特定的proc使用了大量的條件邏輯,默認參數,甚至還有一個遊標來執行一些循環邏輯,但是對於可能的區域的任何建議都是有幫助的。
編輯:爲了澄清,返回的行和列的數量是相同的,但是對於特定的列(對於某些行取決於數據字段的值),該數字恰好是它應該是的兩倍。 2008年給出了「正確的」答案。 '2000'給出了錯誤的答案,即雙重金額。
你可以嘗試2008數據庫設置你的SQL Server兼容性80,看看你會得到相同的結果與SQL Server 2000中一樣。可能有一些設置的行爲有所不同。看看這裏有什麼不同的兼容性級別。 http://msdn.microsoft.com/en-us/library/bb510680.aspx – 2011-04-25 20:56:03
兼容性已被設置爲80,但好建議 – 2011-04-25 21:01:47
您可以將sql減少爲生成該列的代碼並重現問題 - - 我想看看代碼。 – Hogan 2011-04-26 01:27:44