SQL Server 2008 возвращает «Предел памяти, превышающий 10240 КБ для буферизованного запроса»

Я пытаюсь заполнить таблицу HTML некоторыми данными SQL Server 2008 r2, контроллер (php_sqlsrv) отлично работает, таблицы заполняются очень хорошо, но когда я пытаюсь получить 2000 или более строк (может быть, меньше), он сбой и это сообщение:

SQL Error: Array ([0] => Array ([0] => IMSSP [SQLSTATE] => IMSSP [1] => -59 [code] => -59 [2] => Предел памяти в 10240 КБ превышен для буферизованный запрос [сообщение] => Предел памяти в 10240 КБ превышен для буферизованного запроса))

Как я могу это исправить? Это проблема PHP или sqlsrv? Могу ли я исправить это из SQL Server Management Studio?

Related of "SQL Server 2008 возвращает «Предел памяти, превышающий 10240 КБ для буферизованного запроса»"

Измените настройку в 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 (). Кроме того, сервер не поддерживает изменения конфигурации во время выполнения.