Problém s rozdílem mezi voláním SP přímo a z .NET kódu, možná kvůli sniffování parametrů. SQL Server možná ukládá do mezipaměti plán provádění, který není optimální pro parametry, které předáváte z kódu.
Abyste tomu zabránili, zkuste do definice SP přidat WITH RECOMPILE, např.
CREATE PROCEDURE MySP (
... parameters...
) WITH RECOMPILE
AS
BEGIN
...