【发布时间】:2009-03-02 15:49:10
【问题描述】:
我遇到了一个非常奇怪的 sql 相关问题。
我正在使用 PHP (odbc) 访问 MSSQL Server 2005,当我分析 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。 当我尝试执行语句本身时
SELECT fieldA, fieldB, fieldC, fieldD, fieldE FROM mytable WHERE fieldB IS NULL
在 SQL Server Management Studio 中运行良好(不到 1 秒)。
有什么想法吗?
编辑: 服务器之间的主要区别是我的服务器是x86(Win2003),而客户的服务器是x64(Win2008)。
Edit2:添加 Where 子句
【问题讨论】:
-
您能否指定您和您的客户是否拥有完全相同的数据集?
-
不,这不是同一个数据集。我想知道为什么“原始”语句在两台机器上都可以工作,但从 php 执行时却不行......
标签: php sql sql-server sql-server-2005 tsql