我有一個很奇怪的與SQL相關的問題。「無限」的sql語句?
我訪問MSSQL Server 2005中使用PHP(ODBC),當我執行軌跡下面的SQL語句:
declare @p1 int
set @p1=180150003
declare @p3 int
set @p3=2
declare @p4 int
set @p4=1
declare @p5 int
set @p5=-1
exec sp_cursoropen @p1 output,N'SELECT fieldA, fieldB, fieldC, fieldD, fieldE FROM mytable WHERE fieldB IS NULL',@p3 output,@p4 output,@p5 output
select @p1, @p3, @p4, @p5
exec sp_cursorfetch 180150003,2,1,1
在我自己的服務器上它的正常工作,客戶的服務器上sp_cursorfetch讀取無限行並加載完整的cpu。 當我嘗試在SQL Server Management Studio中執行該語句本身
SELECT fieldA, fieldB, fieldC, fieldD, fieldE FROM mytable WHERE fieldB IS NULL
它工作正常(下1秒)。
任何想法?
編輯: 服務器之間的主要區別是,我的服務器是x86(Win2003),而客戶的服務器是x64(Win2008)。
EDIT2:
可以指定你和你的客戶端是否有相同的數據集? – 2009-03-02 15:51:17
不,它不是相同的數據集。我想知道爲什麼「原始」的聲明是在兩臺機器上工作,但不是從php執行時... – chris 2009-03-02 15:56:43