none
querys que não executam RRS feed

  • Pergunta

  • Bom Dia!

    Preciso saber, porque quando executamos uma query passo a passo no query analyser funciona e quando executamos "exec pa_..." não funciona ?

    Parecer ser algum recurso do banco que não está disponível

    Qual seria o recurso?
    segunda-feira, 15 de março de 2010 15:10

Respostas

Todas as Respostas

  • RPaterno,

    sua duvida esta meio confusa,

    mas observe os parametros que vc esta enviando, coloque prints na proc proc pode te ajudar a "debugar"

    att.
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    segunda-feira, 15 de março de 2010 15:25
    Moderador
  • Marcelo,

    vou tentar ser mais claro.

    Você tem a stored procedure gravada e que já havia sido executada e chamada via VB ou .NET e a mesma executava sem problemas e retornava sempre o resultado.

    Hoje, quando você faz a mesma chamada não há retorno até o timeout. Se você dá um sp_helptext na procedure e executa a mesma dentro do query analyzer o resultado esperado é retornado.

    [ ]´s

    RPaterno
    segunda-feira, 15 de março de 2010 16:13
  • RPaterno,

    o timeout foi uma informação muito importante, verifique se não esta ocorrendo bloqueios que esta travando usa proc.

    att.
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    segunda-feira, 15 de março de 2010 16:18
    Moderador
  • Marcelo,

    Não há bloqueios. No Activity Monitor, o job consta como suspended....
    segunda-feira, 15 de março de 2010 16:53
  • Olá RPaterno,

    Pode ser que o plano de execução da SP tenha ficado "ruim" e como o da Query é sempre reavaliado ela ficou mais performática.
    Verifique se os planos de execução são semelhantes e retorne.

    [ ]s,

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

    Como descobrir a data do último acesso a uma tabela ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!964.entry


    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta RPaterno quinta-feira, 18 de março de 2010 18:41
    segunda-feira, 15 de março de 2010 17:00
  • RPaterno,

    Para que a job esteja no status Suspended, algo está bloqueando sua execução. Este bloqueio pode ser algum LOCK em algum objeto envolvido na query ou ainda problemas com a rede, escrita em disco ou memória.

    Para diagnosticar o problema com exatidão observe a coluna [WAIT TYPE] do Activity Monitor, ela irá informar o tipo de WAIT que está bloqueando a sua transação. A view sys.dm_os_wait_stats também retorna informações sobre todos eventos de espera (WAITs) registrados no servidor.

    O link do MSDN traz mais informações:
    http://msdn.microsoft.com/en-us/library/ms179984.aspx

    Espero ter ajudado.

    Deyvid William
    • Sugerido como Resposta Deyvid William segunda-feira, 15 de março de 2010 17:04
    segunda-feira, 15 de março de 2010 17:04
  • prezado deivid,

     

    a mensagem Wait Type consta como PAGEIOLATCH_SH

    segunda-feira, 15 de março de 2010 18:57
  • Olá RPaterno,

    Aparentemente, há algum problema de I/O com seu servidor. Acho interessante verificar se os discos não estã muito ocupados por conta que outras tarefas que rodam concorrentemente. Um outra hipótese seria o fato de sua consulta trabalhar com tabelas muito grandes, que demandam muita leitura em disco, que estejam mal indexadas - aproveite e verifique se há Full scans no seu plano de execução, se houver trabalhe em cima deles.

    Segundo o BOL, o WAIT TYPE que você mencionou é descrito como:

    PAGEIOLATCH_SH

    Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The latch request is in Shared mode. Long waits may indicate problems with the disk subsystem.

     

    Deyvid William

    segunda-feira, 15 de março de 2010 19:30
  • RPaterno,

    Veja também o plano de execução se tem alguma tabela fazendo fullScan ou indice faltante, conforme dica do Maia.


    att.
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    segunda-feira, 15 de março de 2010 19:37
    Moderador
  • Boa Tarde,

    Acredito que analisar questões de hardware não seja bem a solução. Uma vez que a stored procedure é lenta, mas a execução do seu conteúdo via query é imediata, descarta-se aqui problemas no subsistema de disco, pois, se esse fosse o caso, haveria problema nas duas execuções. Claro que não custa analisar o hardware, mas não parece ser o caso.

    Imagino que o plano de execução seja um ponto de partida mais interessante, pois, se eles forem diferentes então sim teremos como investigar melhor o que está ocorrendo.

    [ ]s,

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

    Como descobrir a data do último acesso a uma tabela ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!964.entry


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 15 de março de 2010 20:40
  • Olá RPaterno,

    Pode ser que o plano de execução da SP tenha ficado "ruim" e como o da Query é sempre reavaliado ela ficou mais performática.
    Verifique se os planos de execução são semelhantes e retorne.

    [ ]s,

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

    Como descobrir a data do último acesso a uma tabela ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!964.entry


    Classifique as respostas. O seu feedback é imprescindível

    Gustavo,

    Antes de eu ver tua resposta, descobri que o serviço de manutenção dos índices e estatísticas do banco não estava funcionando adequadamente. Acertei o serviço e executei durante a madrugada do dia seguinte ao detectado o problema.

    problema resolvido, mas a resposta certa foi a tua.

    Obrigado.

    RPaterno
    quinta-feira, 18 de março de 2010 18:43