下面是一個查詢 -查詢工作Management Studio中而不是從客戶端
select maclin,mamatn,caname,madesc,madtop,malstd,mastat,ISNULL(sum(tlchgv),0.00) as WIP,
(select isnull(sum(blcost),0.00) from blfile where blclin = maclin and blmatn = mamatn)
as billed,
isnull(rfhghq,0.00),isnull(rffixq,0.00),ISNULL(rfdate,'17770101'),cmidst
from mafile,cafile,tlfile,rffile,cmfile where maclin=caclin and maclin*=tlclin
and mamatn*=tlmatn and
maclin*=rfclin and mamatn*=rfmatn and maclin=cmclin and tlstat='' and
maeact = 32 and maspca = 0
group by maclin,mamatn,caname,madesc,madtop,malstd,mastat,rfhghq,rffixq,rfdate,cmidst
order by caname,maclin,mamatn
如果我在SQL Server Management Studio中運行,查詢在1秒內運行,並返回5190行。
當我通過ODBC從Windows XP PC桌面上的Visual Foxpro程序運行完全相同的查詢時,查詢將返回沒有錯誤但沒有行!
如果我添加選擇頂部5000到查詢,它的工作,但需要5分鐘。如果我選擇頂級5200,它會再次沒有重新調整。
使用與SQL 2000相同的Visual Foxpro程序,它工作正常。
最離奇。有沒有人有任何想法可能是什麼問題?
爲什麼使用舊式連接和不推薦的'* ='語法?你有沒有想過看到(例如通過Profiler)如果FoxPro在提交給SQL Server之前以某種方式改變了查詢?是否有可能你的表不在'dbo'模式中(或者FoxPro用戶具有不同的默認模式),並且你實際上在每種情況下查看不同的表?或者,也許你連接到不同版本的數據庫或SQL Server的不同實例? – 2012-02-20 15:52:57
謝謝Aaron,他們都在看同一個數據庫,所有的表都在那裏。我確實嘗試轉換爲左外連接,但放棄了,因爲我發現查找查詢的正確語法太複雜了。我忘了提及SQL版本是2008 R2 64位,並且我已將兼容性設置爲80 - SQL 2000.關於dave – Dave 2012-02-20 16:18:19
這聽起來像是您正在發生某種超時並且FoxPro正在放棄。 FoxPro與SQL Server在同一臺計算機上嗎?他們是否使用相同的登錄連接?爲什麼你需要80兼容性? – 2012-02-20 17:18:13