Normalmente, essas são diferenças de configuração do SET, levando a planos diferentes. No Management Studio, o procedimento provavelmente está sendo executado com o mesmo configurações como estavam em vigor quando foi criado.
Dê uma olhada em sys.dm_exec_sessions para seu aplicativo ASP.Net e para sua sessão SSMS. Vou arriscar um palpite de que pelo menos um de seus
SET
configurações é diferente. Isso pode contribuir para planos diferentes (em última análise, isso é atribuído à detecção de parâmetros) e o lado do aplicativo geralmente acaba pior. Veja estas outras perguntas para muito mais detalhes:
- Procedimento armazenado lento quando chamado da web, rápido no Management Studio
- O procedimento expira no ADO.NET, mas não no SSMS
- A consulta expira quando executada a partir da Web, mas super-rápida quando executada a partir do SSMS
- ADO . NET vs. SQL Server Management Studio - ADO tem desempenho pior
- sql roda rápido em ssms lento em asp.net
E também leia o artigo de Erland Sommarskog, Lento no aplicativo, rápido no SSMS?