SQL Server 2008返回"缓冲查询的内存限制超过10240 KB"

时间:2014-12-09 23:27:31

标签: php sql-server-2008-r2

我试图用一些SQL Server 2008 r2数据填充HTML表格,控制器(php_sqlsrv)工作正常,表格填充得很好,但是当我尝试检索2000行或更多行时(也许它会崩溃并显示这条消息:

  

SQL错误:数组([0] =>数组([0] => IMSSP [SQLSTATE] => IMSSP [1] => -59 [代码] => -59 [2] = >缓冲查询的内存限制超过10240 KB [message] =>缓冲查询的内存限制超过10240 KB))

我该如何解决这个问题?这是PHP还是sqlsrv问题?我可以从SQL Server Management Studio修复此问题吗?

3 个答案:

答案 0 :(得分:10)

更改php.ini中的设置。

部分:sqlsrv

指令:sqlsrv.ClientBufferMaxKBSize。

答案 1 :(得分:10)

在php.ini中添加两行

extension=php_pdo_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_ts.dll
client_buffer_max_kb_size = '50240'
sqlsrv.ClientBufferMaxKBSize = 50240

答案 2 :(得分:4)

如果您不需要生产服务器更改php.ini,您也可以在运行时更改设置(检查这是否适用于您的托管)。

使用以下行更新代码:

ini_set('memory_limit','256M'); // This also needs to be increased in some cases. Can be changed to a higher value as per need)
ini_set('sqlsrv.ClientBufferMaxKBSize','524288'); // Setting to 512M
ini_set('pdo_sqlsrv.client_buffer_max_kb_size','524288'); // Setting to 512M - for pdo_sqlsrv

要检查您的服务器是否支持此功能,请在设置完上述内容后打印值。

echo ini_get('memory_limit');
echo ini_get('sqlsrv.ClientBufferMaxKBSize');
echo ini_get('pdo_sqlsrv.client_buffer_max_kb_size');

新值应该是我们在ini_set()中设置的值。否则,服务器不支持运行时配置更改。