Ho notato che non hai impostato CommandType su StoredProcedure... Non so se questa sia la causa del tuo problema o meno:
cmd.CommandType = CommandType.StoredProcedure;
L'ho fatto così tante volte io stesso che non riesco a contare.
Suggerimento per attivare la memoria quando verranno generate eccezioni la prossima volta:
Tieni aperto SQL Query Profiler durante l'esecuzione dell'app. Quando ogni comando viene eseguito, mostra l'SQL generato ed eseguito sul lato server. Se l'SQL generato inizia con sp_executesql
seguita dalla tua query, quindi viene eseguita come una query normale, ad esempio cmd.CommandType = CommandType.Text
, se inizia con exec
, è probabile che venga eseguito come processo memorizzato. Assicurati di ricevere l'SQL corretto generato per il tipo di query che stai tentando di eseguire.