2014-12-09 17 views
6

Sto tentando di compilare una tabella HTML con alcuni dati di SQL Server 2008 r2, il controller (php_sqlsrv) funziona correttamente, le tabelle sono riempite molto bene, ma quando cerco di recuperare un 2000 o più righe (forse meno) si blocca e mostra questo messaggio:SQL Server 2008 restituisce "Limite di memoria di 10240 KB superato per query bufferizzata"

SQL Error: Array ([0] => Array ([0] => IMSSP [SQLSTATE] => IMSSP [1] => -59 [code] => -59 [2] => Memory limit of 10240 KB exceeded for buffered query [message] => Memory limit of 10240 KB exceeded for buffered query))

Come posso risolvere questo problema? Si tratta di un problema PHP o sqlsrv? Posso risolvere questo problema da SQL Server Management Studio?

+0

Possiamo vedere il tuo codice che fa questo? Stai cercando di tenere tutte quelle file in memoria? Puoi aumentare il limite del buffer a cui si riferisce? Non so dove sia impostato, ma immagino che php.net abbia dei documenti su di esso. – halfer

+0

mi sto solo sistemando il problema amico mio;) grazie ... sì era circa il limite del buffer ma non sapevo come aumentarlo ... grazie comunque !!! – user3435588

+1

Grande. Aggiungi una soluzione nella casella sottostante, in modo che altre persone possano vedere come risolvere questo errore. – halfer

risposta

9

Modificare l'impostazione in php.ini.

Sezione: SQLSRV

direttiva: sqlsrv.ClientBufferMaxKBSize.

+0

Grazie l'ho fatto la chiocciola è finita ... ma grazie comunque, saluti! – user3435588

7

aggiungere due righe nel file php.ini

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

Se si utilizza PDO (come per Drupal) è necessario aggiungere anche pdo_sqlsrv.client_buffer_max_kb_size = 50240 – NickStees

+0

Grazie! Questo mi ha davvero aiutato molto. – user2662680

1

è anche possibile modificare le impostazioni durante il runtime se non richiede server di produzione per avere la php.ini cambiato (Verificare se questo è applicabile con il tuo hosting) .

Aggiornare il codice con le righe seguenti:

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 

Per verificare se il server supporta questo, provare a stampare i valori dopo l'impostazione di cui sopra.

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

I nuovi valori dovrebbero essere quelli che avevamo impostato in in_set(). Altrimenti, il server non supporta le modifiche alla configurazione del runtime.

Problemi correlati