none
SP_PREPARE? RRS feed

  • Pergunta

  • Colegas, tudo bem?

    Estou com alguns problemas de lentidão em um de nossos sistemas, e acabei identificando a query abaixo no profiler:

    declare @p1 int  set @p1=1  exec sp_prepare @p1 output,NULL,N'SELECT * FROM Pedidos',1  select @p1

    Andei pesquisando na Net do que se trata, mas não achei nenhuma informação que me ajudasse.

    Por exemplo, essa tabela pedido tem mais de 5 milhões de registros. Se executar um select desses, sem nolock, meu sistema vai parar.

    O que é essa procedure?

    Por que o SQL Server está executando?

    Como eu faço isso parar?

    Obrigada,

    Ignez

    quinta-feira, 26 de junho de 2014 14:56

Respostas

Todas as Respostas

  • Deleted
    quinta-feira, 26 de junho de 2014 15:38
  • Ignez,

    Tudo isso depende do nível de isolamento de dados que você ou outros desenvolvedores possam estar utilizando simultaneamente nas consultas de uma mesma tabela.

    Utilizar "nolock" vai ajudar os demais usuários a não sofrerem impacto nas suas consultas, mas dependendo de como eles realizam suas consultas você poderá sofrer lentidão.

    Seria interessante monitorar durante um período através do TRACE ou do SQL Profiler todas as consultas realizadas para este banco de dados e, mais especificamente, nas tabelas que você acredita que possa ocorrer lentidão.

    Também seria bom revisar os índices utilizados nas suas tabelas e se existe a necessidade de manutenção ou criação de novos índices para agilizar o retorno dos dados em determinadas condições de cláusulas WHERE com muitos argumentos.

    Para maiores informações veja:

    http://msdn.microsoft.com/pt-br/library/ms173763.aspx

    http://msdn.microsoft.com/pt-br/library/ms187373.aspx

    http://msdn.microsoft.com/pt-br/library/ms189858.aspx

    http://msdn.microsoft.com/pt-br/library/ms175047.aspx

    http://technet.microsoft.com/pt-br/library/ms191006(v=sql.105).aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    sexta-feira, 27 de junho de 2014 13:50
    Moderador
  • Caros,

    Agradeço as respostas. Descobri que o sp_prepare aparece devido a um parâmetro utilizado no sistema, no momento de criar o objeto de consulta. Já repassei para os desenvolvedores, e eles vão avaliar a necessidade, ou não, de manter esse parâmetro.

    Agradeço a ajuda.

    Ignez

    segunda-feira, 30 de junho de 2014 14:30
  • José,

    Não localizei no profiler a chamada sp_execute após o sp_prepare.

    Mas eu localizei:

    Evento 10 - RPC:Completed

    TextData: declare @p1 int  set @p1=1  exec sp_prepare @p1 output,NULL,N'SELECT * FROM Tabela',1  select @p1

    Evento: 45 - SP:StmtCompleted

    TextData SELECT * FROM Tabela

    Isso ajuda?

    segunda-feira, 30 de junho de 2014 16:37