Script grande, muitas inserções e exclusões: Não há memória do sistema suficiente para executar essa consulta

1

Uma vez a cada 2 a 3 meses, o cliente nos envia um script SQL gigante para atualizar seu banco de dados da Web com alterações. O script falha quando você tenta executá-lo via SQL Server Management Studio devido à memória insuficiente.

Executamos a consulta usando o SQL Query Analyzer / Mgmt Studio.

Error message: Server: Msg 701, Level
17, State 1, Line 64302
There is insufficient system memory to run this query

O mesmo problema no SQL 2000 e no SQL 2005.

O script contém uma série de instruções DELETE e INSERT para várias tabelas.

O arquivo pode ter o tamanho de 57973 KB.
Existem mais de 12000 objetos no banco de dados, sem mencionar a consulta de tabelas e a junção de tabelas. A tabela de mídia possui 65720 registros e outra tabela possui 97799 registros.

Não temos como alterar a exportação do SQL que recebemos do cliente.

    
por John K 29.03.2011 / 20:49

3 respostas

2

Realmente não há muito a ser feito aqui, além de (a) aumentar sua RAM disponível ou (b) diminuir o tamanho da consulta. Se tudo isso está acontecendo dentro de uma grande transação gigante, você pode realmente estar em um mundo de dor, especialmente se os conjuntos de dados que estão sendo alterados forem grandes (muitas colunas, BLOBs, etc.).

Isso soa como um caso em que você precisa se sentar com seu cliente e discutir alternativas para reduzir os conjuntos de alterações que você está carregando - talvez uma atualização mensal / semanal / diária em vez de a cada 2-3 meses?

    
por 29.03.2011 / 21:00
2

Este é um lado do servidor sem memória. Dado que o erro menciona Line 64302 , eu diria que o script é um único lote (sem delimitadores GO). Isso poderia explicar o problema. Deve ser bastante trivial dividir o script recebido em vários lotes, basta inserir GO quando apropriado.

    
por 30.03.2011 / 09:11
1

Você tentou executar o script por meio do comando OSQL. Isso deve eliminar grande parte da sobrecarga do uso do SSMS. Isso pelo menos isolaria se fosse um problema de banco de dados ou um problema com o modo como o SSMS está lidando com a consulta.

Apenas um pensamento.

    
por 29.03.2011 / 21:00