Problema no uso de memória no SQL Server 2008

Se em algum momento, quando em trabalho, estiver recebendo uma das seguintes mensagens abaixo, você está tendo sérios problemas de uso de memória:

"There is insufficient system memory in resource pool 'internal' to run this query" *

ou

"Há memória de sistema insuficiente no pool de recursos internos para executar essa consulta" *

Isso ocorre quando há várias instruções SQL sendo executadas em seqüência. Como o pool não aguenta, os dados, em algumas vezes, podem travar... Mesmo que fisicamente eles estejam lá, não se pode mais ser utilizados até que o banco seja reiniciado. Para corrigir esse problema há duas formas: instalar o hotfix que a Microsoft disponibilizou ou reduzir quantidade de instruções a serem executadas por vez.

1) Instalar o HotFix

O arquivo está disponível em um pack cumulativo pós SP1 do SQL Server 2008. Para mais informações e download, clique aqui.

2) Reduzir a quantidade de instruções SQL

Fazendo um teste de vários UPDATE's seguidos, consegui obter tal erro. Gerei um arquivo .sql com quase 100mil updates e mandei o SQL Server executar, daí obtive o erro. Nunca tente isso! Se desejar executar vários UPDATE's ou INSERT's de vez fragmente a execução das instruções em blocos (nem tão grandes e nem tão pequenos) dando uma pausa entre as execuções. Pode-se utilizar uma Store Procedure buscando os dados em um tabela temporária e executar a instrução de forma genérica (INSERT com SELECT, por exemplo). Também pode-se usar um artifício do ASP.NET, Batch Update, para executar a instrução de forma genérica com alto desempenho.

* A depender da configuração do SQL Server, ao invés de ser o recurso interno (ou internal) pode ser o recurso default.

0 comentários:

Postar um comentário