Como solucionar problemas de desempenho do servidor sql

Ok, esse problema geral elevou sua cabeça feia duas vezes nos últimos 6 meses (procedimento armazenado diferente). Nossos usuários internos relatam um erro de tempo limite no aplicativo. Podemos reproduzir o problema na aplicação em um ambiente controlado. Então, seguimos as etapas normais de verificação de bloqueio usando sp_who2. Tudo parece bom sem bloqueio. Então, fazemos um rastreamento sql para ver exatamente como o procedimento está sendo executado. Copiamos isso para uma nova janela no SQL Management Studio e executamos o que o sql trace estava nos dizendo que o ADO.Net estava fazendo e terminou em milissegundos. O tempo limite de nossos aplicativos é de 30 segundos. Quando esse problema ocorreu alguns meses atrás, tínhamos o SQL Server 2005. Agora, atualizamos para o SQL Server 2008 R2. Qual é o próximo passo para diagnosticar um problema como este?

@ Martin: Obrigado pela resposta. Vou ler sua postagem em detalhes e informar o que descobri. Até lá, aqui está o sql no SP que você solicitou:

Select 
    @Exists=0, 
    @EarnRecId=0,
    @SuppStatusId = 0,
    @SLRecId = 0,
    @EarnRecDS = Null

Select
    @EarnRecId = er.EarningsId,
    @EarnRecDS = Convert(Varchar(26),er.Datestamp, 109),
    @SuppStatusId = s.SuppStatusId,
    @SLRecId = s.SLId
From
    Tracking tr
    Inner Join Supps s On s.SuppId = tr.SuppId
    Inner Join Earnings er On er.EarnRecId = s.SuppId
Where
    tr.ClaimId = @ClaimId
    and er.FiscalYr = @FiscalYr
    And er.EmplyrId In (@EmpId1,@EmpId2)

If @EarnRecId > 0
    Begin
        Set @Exists=1
    End

questionAnswers(2)

yourAnswerToTheQuestion