sql server 2005: não há memória de sistema suficiente para executar esta consulta
<p>um de nossos servidores sql, que está funcionando de forma estável há algum tempo (anos), recentemente apresentou erros de memória insuficiente. no log de eventos do aplicativo, vemos:</p><p><strong>id do evento: 701</strong></p><p><strong>descrição: não há memória de sistema suficiente para executar esta consulta.</strong></p><p>nossa equipe que gerencia este servidor é composta principalmente de desenvolvedores que se dobram nas funções de administrador de sistema. no entanto, nossa principal especialidade é o desenvolvimento. dito isso, não sabemos como solucionar o problema. temos vasculhado fóruns e outros enfeites e não encontramos nada que corresponda</p><p>portanto, aqui estão mais alguns detalhes para ajudar na solução de problemas:</p><ul> <li>nossa memória mínima do servidor é definida como 0.</li> <li>nossa memória máxima do servidor está definida para 2.000.</li> <li>a memória física total é de 3.325,85 mb (de sysinfo).</li> <li>a memória virtual total é de 7,10 gb (de sysinfo).</li> <li>não estávamos usando awe para alocar memória, mas agora vamos ver se isso faz diferença.</li> <li>este erro foi gerado por um trabalho que estava fazendo backup de um log de transações, não executando uma consulta.</li> <li>temos muitos servidores vinculados. os tipos de rdbms do outro lado são sql server (2005 e 2000), oracle 10g e sistemas osi pi.</li> <li>é intermitente neste ponto. parece que não podemos correlacionar qualquer momento ou evento aos erros.</li> <li>claro, a reinicialização parece fazer com que ele desapareça por um tempo, o que faz sentido devido à natureza da mensagem de erro.</li> <li>este servidor triplica como servidor de aplicação (alguns windows services) e servidor web, bem como servidor de banco de dados.</li> </ul><p><strong>editar:</strong></p><p>estamos no sp3. a maioria das postagens que encontramos eram anteriores ao sp1, o que não se aplica a nós.</p><pre><code>select serverproperty('productversion'), serverproperty ('productlevel'), serverproperty ('edition') </code></pre><p>retorna</p><p>9.00.4035.00 sp3 standard edition</p>
<p>eu sugeriria usar o parâmetro de inicialização -g também. parece funcionar para a maioria das pessoas e provavelmente funcionará para você também. minha única preocupação é que o problema subjacente não seja resolvido. por exemplo, se houver um vazamento de memória devido a um servidor vinculado e o mtl for aumentado para 512 mb, será apenas um período mais longo entre os problemas de memória? não sei a resposta para isso, mas tendo a concordar com underthefold em que um perfmon pode ser um bom começo.</p>
<p>para suportar mais de 4 gb de memória windows usa <a href="http://en.wikipedia.org/wiki/physical\_address\_extension">extensão de endereço físico</a> (pae). ele usa tabelas de paginação para mapear a memória maior que 4 gb. ao fazer isso, o tamanho do endereço físico é aumentado para 36 bits, ou 64 gb. pae é usado em sistema operacional de 64 bits também; neste caso, o tamanho máximo é dobrado para 128 gb.</p><p>este método significa que cada processo ainda está limitado a um máximo de 4 gb de memória.</p> começámos a ligar a alimentação dos servidores no sbg1.

 estão a ser iniciados em modo rescue.

 todos os clientes são alertados através do e-mail automático de ativação do modo rescue.

 antes de tentar reiniciar o sistema operativo do servidor recomendamos que **permaneça em modo rescue para obter os dados mais críticos.**

 uma vez os dados críticos guardados recomendamos que efetue testes de hardware (discos rígidos "smart" processador memória) para garantir o bom funcionamento do seu servidor.

 consulte o nosso manual técnico dedicado ao modo rescue: https://docs.ovh.com/pt/dedicated/rescue\_mode/#instrucoes

 de seguida poderá reiniciar o seu servidor no seu próprio sistema operativo.

 se não for possível iniciar o servidor no seu so recomendamos que efetue uma tomada de controlo à distância kvm através do ipmi.

 consulte o nosso manual técnico dedicado à utilização do ipmi: https://docs.ovh.com/pt/dedicated/usar-ipmi-servidores-dedicados/ <p>o operador <a href="http://php.net/manual/en/language.operators.errorcontrol.php"><code>@</code></a> tells php para suprimir mensagens de erro, para que elas não sejam mostradas.</p><p>por exemplo, usando:</p><pre><code>$result = mysql\_query("this is an invalid query"); </code></pre><p>resultaria em um aviso sendo mostrado, informando que a consulta mysql é inválida, enquanto</p><pre><code>$result = @mysql\_query("this is still an invalid query"); </code></pre><p>não faria.</p><p>note, no entanto, que esta é uma prática de programação muito ruim, pois não faz com que o erro desapareça, apenas os esconde e torna a depuração muito pior, já que você não consegue ver o que está realmente errado com seu código.</p><p>em vez de usar <code>@</code>, você deve desativar <s><code>error\_reporting</code> e <code>display\_errors</code></s> apenas <code>display\_errors</code> em <a href="http://no.php.net/manual/en/errorfunc.configuration.php">php.ini</a> </p> <p>se você está procurando um bom artigo, recomendo</p><p> <a href="http://icrontic.com/articles/how\_ssds\_work/2">como e por que os ssds</a> por robert hallock</p><p>vinculei a página 2, que contém a parte que discute o cluster e o tamanho do bloco.</p><blockquote> <p>[...] a solução para o problema é aumentar o tamanho do cluster, para o qual existem várias vantagens:</p> <ul> <li>complexidade reduzida do sistema de arquivos; menos clusters significa menos para organizar.</li> <li>maior velocidade de leitura e gravação à medida que o tamanho do cluster se aproxima da paridade com o tamanho do bloco.</li> <li>diminuição do espaço livre se o sistema for composto principalmente de arquivos grandes.</li> </ul> <p>no entanto, o aumento do tamanho do cluster não é um item mágico para os discos de estado sólido, pois a maioria das pessoas tem uma mistura de informações. os jogos geralmente contêm uma infinidade de arquivos pequenos e os sistemas operacionais são a soma de arquivos pequenos quase como regra; no entanto, filmes, músicas, arquivos e mmos são candidatos perfeitos para tamanhos de cluster ampliados. mais frustrante do que a âncora de pequenos clusters é o processo complicado de obter clusters maiores nos modernos sistemas operacionais windows. tal feito requer o uso premeditado de programas como o acronis disk director, que podem aumentar o tamanho do cluster antes da instalação do windows. também é possível redimensionar os clusters existentes, mas esse procedimento é realizado com um grau assustadoramente variado de sucesso.</p> </blockquote> <p>dá true... 
consegui resolver aqui... refiz todo o curso a partir do início. e instalei novamente o hsqldb.jar.
não deu mais erro.
obrigado a todos pela ajuda!</p> @joojinho\_ com os valores atuais acho difícil ainda mais para notebook, se for desktop até da para conseguir algo melhor, mas notebook esta muito caro.  para uso de escritorio esse vai servir para ela e se precisar é so comprar uma memoria que ja vai dar uma melhorada no desempenho. Depende do que você está fazendo. Que você pode mudar se:


* Você precisa de mais escalabilidade ou melhor desempenho - dizer do SQLite para o SQL Server ou Oracle.
* Você precisa ter acesso a tipos de dados mais específicos.
* Você precisa apoiar um cliente que só funciona um banco de dados específico.
* Você precisa de ferramentas melhores DBA.
* Seu aplicativo está usando uma plataforma diferente, onde o seu banco de dados não funciona, ou é bibliotecas não funcionam.


Há muitas mais razões para mudar e tudo depende de suas necessidades. <p>é <a href="http://msdn.microsoft.com/en-us/library/ms186775.aspx"><code>identity</code></a> não <code>auto\_increment</code> no sql server.</p><p>em vez disso, tente isto:</p><pre><code>create table [dbo].[my\_table] ( [id] int not null identity(1, 1), [name] nvarchar (100) null, [school] nvarchar (100) null, primary key (id) ); </code></pre> <p>eu sugeriria ter duas áreas separadas - uma onde o usuário faz entradas descrevendo sua disponibilidade e outra em que o sistema exibe o resultado agregado.</p><p>essencialmente, isso replica a conversa que duas pessoas podem ter, fornecendo uma área para o usuário "falar" e outra para o sistema "refletir de volta" seu entendimento.</p><h3>entrada</h3><p>forneça uma área em que os usuários descrevam sua disponibilidade.</p><p>uma maneira de fazer isso seria permitir que eles fizessem uma série de declarações altamente estruturadas, mas em inglês.</p><ul> <li>estou disponível todas as terças e quartas-feiras</li> <li>estou disponível toda quinta-feira depois das 14h</li> <li>não estou disponível na última quinta-feira do mês</li> </ul><p>você pode permitir que os usuários os digitem diretamente ou forneça algum tipo de construtor simples.</p><h3>exibição</h3><p>ao lado da entrada de dados, forneça um calendário mostrando como as instruções do usuário definem sua disponibilidade. torne isso navegável, para que as pessoas possam olhar para o futuro (ou, talvez, o passado). se o usuário parar em um intervalo de tempo específico, mostre uma dica de ferramenta que descreve por que eles estão (ou não) disponíveis no momento.</p><ul> <li>o usuário aponta em um horário de segunda-feira.<br> sistema: <em>você não está disponível a qualquer momento às segundas-feiras</em></li> <li>o usuário aponta em um horário de quinta-feira de manhã.<br> sistema: <em>você não está disponível às quintas-feiras antes das 14:</em></li> <li>o usuário aponta na quinta-feira à tarde, perto do final do mês.<br> sistema: <em>você não está disponível nesta quinta-feira porque é a última quinta-feira do mês.</em></li> </ul><p>se o usuário clicar em um intervalo de tempo, você pode destacar as regras que contribuem para a disponibilidade naquele momento.</p> <p>assumindo o sql server 2005+ um exemplo de como obter<strong> apenas </strong>a segunda linha (que eu acho que você pode estar perguntando - e é a razão pela qual <code>top</code> não funcionará para você?)</p><pre><code>set statistics io on ;with cte as ( select * , row\_number() over (order by number) as rn from master.dbo.spt\_values ) select * from cte where rn=2 /*just to add in what i was running re: comments*/ ;with cte as ( select top 2 * , row\_number() over (order by number) as rn from master.dbo.spt\_values ) select * from cte where rn=2 </code></pre>