我有一个很奇怪的与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