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

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

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

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

7

Решение

Измените настройку в php.ini.

Раздел: sqlsrv

Директива: sqlsrv.ClientBufferMaxKBSize.

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
9

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

3
По вопросам рекламы [email protected]