我正在尝试用一些SQL Server 2008 r2数据填充HTML表,控制器(php_sqlsrv)工作正常,表填充得很好,但是当我尝试检索2000或更多行(可能更少)时,它崩溃并显示以下消息:
SQL 错误: 数组 ( [0] => 数组 ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -59 [代码] => -59 [2] => 缓冲查询超出 10240 KB 的内存限制 [消息] => 缓冲查询超出 10240 KB 的内存限制))
我该如何解决这个问题?这是PHP还是sqlsrv问题?我可以從 SQL Server Management Studio 修復這個問題嗎?
在 php.ini 中更改设置。
部分: sqlsrv
指令:sqlsrv。ClientBufferMaxKBSize.
在php中添加两行.ini
extension=php_pdo_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_ts.dll
client_buffer_max_kb_size = '50240'
sqlsrv.ClientBufferMaxKBSize = 50240
如果您不需要生产服务器更改 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() 中设置的值。否则,服务器不支持运行时配置更改。