none
erro de buffers RRS feed

  • Pergunta

  • Bom dia,

    estou com um erro no sql server 2000, sp4 quando executo umas querys pesadas. Alguém pode me ajudar ?

    segue o @@version

    Microsoft SQL Server  2000 - 8.00.2282 (Intel X86)   Dec 30 2008 02:22:41   Copyright (c) 1988-2003 Microsoft Corporation  Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
     

    mensagem de erro:

     

    Server: Msg 802, Level 17, State 1, Line 1
    No more buffers can be stolen.
    Server: Msg 802, Level 17, State 1, Line 1
    No more buffers can be stolen.
    The statement has been terminated.
     

     

     Tks,

    quinta-feira, 6 de maio de 2010 14:12

Todas as Respostas

  • Bom Dia,

    Esse erro diz em outras palavras que não há como alocar mais memória para rodar suas consultas. Há pouco o que fazer, mas seguem algumas sugestões

    - Otimize as consultas para que elas não consumam tanta memória assim
    - Guarde os resultados em tabelas sumarizadas para evitar o uso de JOINs e mais acessos a dados
    - Serialize as consultas para que elas sejam executadas um por vez e assim não disputem os recursos de memória
    - Adicionar mais memória para que não falte recursos para rodar a consulta

    Indico a otimização como principal linha de ação. Isso significar rever principalmente os índices e as construções utilizadas.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Simulado para o Exame 70-433 - MCTS: Microsoft SQL Server 2008 - Database Development – Parte 01
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1018.entry


    Classifique as respostas. O seu feedback é imprescindível
    quinta-feira, 6 de maio de 2010 14:22
  • ok Gustavo, obrigado pela resposta.

    O que você acha de aplicar esse hotfix ??

    http://translate.google.com.br/translate?hl=pt-BR&langpair=en%7Cpt&u=http://support.microsoft.com/kb/895123

     

    Sds,

    FELITI

    quinta-feira, 6 de maio de 2010 14:59
  • Boa Tarde,

    Considerando que você está no Service Pack 4 com o FIX 2282 e que esse hotfix é o 1007 eu não acho pertinente já que ele representa uma build bem mais antiga. Para ser sincero não sei nem se você conseguirá aplicá-lo. Não recomendo a aplicação. Sugiro verificar as alternativas anteriores.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Simulado para o Exame 70-433 - MCTS: Microsoft SQL Server 2008 - Database Development – Parte 01
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1018.entry


    Classifique as respostas. O seu feedback é imprescindível
    quinta-feira, 6 de maio de 2010 16:46
  • Boa tarde,

    Estou executando uma query simples de drop e create index e continua apresentando erro. O servidor tem 16GB de memória física.

    Será que é alguma configuração de alocação de memória? Você teria alguma sugestão em relação a essa configuração? Segue o log de erro e a configuração do memorystatus

     

    ===> Mensagem de erro no log:

    2010-05-06 17:13:05.25 server    Error: 17803, Severity: 20, State: 17
    2010-05-06 17:13:05.25 server    Insufficient memory available..

    ===> Resultado do memorystatus:

     

    Buffer Distribution            Buffers    
    ------------------------------ -----------
    Stolen                         330
    Free                           33939
    Procedures                     132
    Inram                          395926
    Dirty                          30
    Kept                           0
    I/O                            0
    Latched                        28
    Other                          831

    (9 row(s) affected)

    Buffer Counts                  Buffers    
    ------------------------------ -----------
    Commited                       431216
    Target                         431216
    Hashed                         396815
    InternalReservation            144
    ExternalReservation            0
    Min Free                       256
    Visible                        431216

    (7 row(s) affected)

    Procedure Cache                Value      
    ------------------------------ -----------
    TotalProcs                     54
    TotalPages                     132
    InUsePages                     63

    (3 row(s) affected)

    Dynamic Memory Manager         Buffers    
    ------------------------------ -----------
    Stolen                         462
    OS Reserved                    920
    OS Committed                   898
    OS In Use                      894
    General                        1083
    QueryPlan                      127
    Optimizer                      0
    Utilities                      13
    Connection                     95

    (9 row(s) affected)

     
    Global Memory Objects          Buffers    
    ------------------------------ -----------
    Resource                       940
    Locks                          32
    XDES                           24
    SQLCache                       46
    Replication                    2
    LockBytes                      2
    ServerGlobal                   20

    (7 row(s) affected)

     
    Query Memory Objects           Value      
    ------------------------------ -----------
    Grants                         0
    Waiting                        0
    Available (Buffers)            323118
    Maximum (Buffers)              323118

    (4 row(s) affected)

    Optimization Queue             Value      
    ------------------------------ -----------
    Optimizing                     0
    Waiting                        0
    Available                      32
    Maximum                        32

    (4 row(s) affected)

     

    quinta-feira, 6 de maio de 2010 20:48
  • Bom Dia,

    Olhando a distribuição dos Buffers não me parece que você está utilizando os 16GB de memória. Você poderia me confirmar os seguintes detalhes ?

    - O boot.ini está com o /PAE e o /3GB ?
    - O SQL Server está com o AWE habilitado ?
    - Quais as configurações de memória mínima e máxima do SQL Server ?

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como monitorar e logar as colunas que foram atualizadas ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1024.entry


    Classifique as respostas. O seu feedback é imprescindível
    sexta-feira, 7 de maio de 2010 11:09
  • Bom dia,

    Gustavo,

    O arquivo boot.ini está default

    [boot loader]
    timeout=30
    default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn

    Sds,

    sexta-feira, 7 de maio de 2010 13:17
  • Bom Dia,

    O seu Windows é X64. Me parece que o negócio é só com o SQL Server.
    Rode o seguinte comando e em seguida reinicie o SQL Server

    EXEC sp_configure 'show advanced options',1
    GO
    RECONFIGURE WITH OVERRIDE
    GO
    EXEC sp_configure 'AWE Enabled',1
    GO
    RECONFIGURE WITH OVERRIDE
    GO

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como monitorar e logar as colunas que foram atualizadas ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1024.entry


    Classifique as respostas. O seu feedback é imprescindível
    sexta-feira, 7 de maio de 2010 14:23
  • Boa tarde,

    Executei o comando que habilita o AWE do sql server, adicionei as entradas /PAE e /3GB no arquivo boot.ini, configurei o min e max de memória do sql server conforme abaixo, mas o sql continua apresentando erro de memória:

    sp_configure 'min server memory', 0
    RECONFIGURE
    GO

    sp_configure 'max server memory', 13791
    RECONFIGURE
    GO

    ---------------------ERRO DO LOG -------------------------------------------------------------------------

    2010-05-07 12:39:26.63 spid21    Error: 17803, Severity: 20, State: 17

    2010-05-07 12:39:26.63 spid21    Insufficient memory available..

    2010-05-07 12:39:26.63 spid21    Error: 701, Severity: 17, State: 66

    2010-05-07 12:39:26.63 spid21    There is insufficient system memory to run this query..

    2010-05-07 12:39:26.63 spid21    System Task OnDemand produced an error on startup that was not handled.  Major: 7, Minor: 1, Severity:17, State:66

    2010-05-07 12:39:28.39 server    Error: 17803, Severity: 20, State: 14

    2010-05-07 12:39:28.39 server    Insufficient memory available..

    2010-05-07 12:39:33.59 server    Error: 17803, Severity: 20, State: 14

    2010-05-07 12:39:33.59 server    Insufficient memory available..

    2010-05-07 12:39:38.80 server    Error: 17803, Severity: 20, State: 14

    2010-05-07 12:39:38.80 server    Insufficient memory available..

    2010-05-07 12:39:44.00 server    Error: 17803, Severity: 20, State: 14

    2010-05-07 12:39:44.00 server    Insufficient memory available..

     

    sexta-feira, 7 de maio de 2010 18:25
  • FELITI,

    seria interessante você fazer um levantamento de qual conexão está causando esse estouro de memória.

    Para cada conexão do SQL Server, é criado um thread no sistema operacional. Através do perfmon.exe você pode verificar o consumo de memória dos threadas do SQL Server e descobrir qual conexão pode estar causando erro de memória.

    Para fazer o mapeamento da conexão com o thread, você pode ler este KB:

    http://support.microsoft.com/kb/117559/en-us

    Espero ter ajudado.


    Se a resposta resolveu sua questão ou problema, classifique-a para manter a qualidade do forum e a confiabilidade dos participantes.

    Alex M. Bastos
    http://bastosalex.spaces.live.com
    segunda-feira, 10 de maio de 2010 12:26
  • Boa Tarde,

    Esse comportamento é estranho. Você poderia rodar a consulta abaixo:

    SELECT * FROM sysperfinfo where counter_name in (
    'Connection Memory (KB)',
    'Lock Memory (KB)',
    'Maximum Workspace Memory (KB)',
    'Target Server Memory(KB)',
    'Total Server Memory (KB)')

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Por que utilizar uma ferramenta de ETL ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1026.entry 


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 10 de maio de 2010 17:52
  • Bom dia,

    Gustavo,

    Desculpe a demora em retornar, pensei que tivesse resolvido o problema, mas ele persiste. Segue o resultado da consulta. O que você acha de alterarmos os parâmetros de configuração do Startup Parameters adicionando -g256 ?

    OBS=> o erro é apresentado quado tento criar um índice em uma tabela de 12.000.000 de registros.

    object_name                    counter_name                      instance_name         cntr_value  cntr_type  
    ------------------------------ --------------------------------- --------------------- ----------- -----------
    SQLServer:Memory Manager       Connection Memory (KB)                          1048        65536
    SQLServer:Memory Manager       Lock Memory (KB)                                    984         65536
    SQLServer:Memory Manager       Maximum Workspace Memory (KB)           775768     65536
    SQLServer:Memory Manager       Target Server Memory(KB)                     3717040     65536
    SQLServer:Memory Manager       Total Server Memory (KB)                      3717040     65536

    Muito obrigado pela ajuda.

    Sds, FELITI

     

     

    terça-feira, 11 de maio de 2010 14:39
  • Bom Dia,

    O parâmetro -g trabalha uma área de memória chamada MemToLeave e o seu valor default já é 256. Talvez se você aumentar para 1024 dê alguma diferença, mas acho pouco provável (só fará efeito após a reinicialização do SQL Server).

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Por que utilizar uma ferramenta de ETL ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1026.entry 


    Classifique as respostas. O seu feedback é imprescindível
    terça-feira, 11 de maio de 2010 14:58
  • Certo, e quanto ao resultado da consulta acima, você acha que está de acordo ?

    E se alterarmos a quantidade de memória para criação de indices.. ex:

    sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'index create memory', 4096
    GO
    RECONFIGURE;
    GO
    
    terça-feira, 11 de maio de 2010 15:36
  • Bom dia !!

    Para conhecimento:
    O problema de alocação de memória foi solucionado com a alteração do usuário que starta os serviços do sql server e a inclusão desta conta do dominio no Lock Pages in Memory das configurações do Windows do Group Police Editor (gpedit.msc). Conforme procedimento: http://support.microsoft.com/kb/921928  (item2)

    Muito Obrigado pela ajuda.

    FELITI

    quarta-feira, 12 de maio de 2010 12:19