Zauważyłem, że nie ustawiłeś CommandType na StoredProcedure... Nie wiem, czy to jest przyczyna twojego problemu, czy nie:
cmd.CommandType = CommandType.StoredProcedure;
Robiłem to tak wiele razy, że nie mogę zliczyć.
Wskazówka, aby wyzwolić pamięć, gdy następnym razem zgłosi wyjątki:
Otwórz program SQL Query Profiler podczas działania aplikacji. Gdy każde polecenie jest wykonywane, pokazuje wygenerowany kod SQL i uruchomiony po stronie serwera. Jeśli wygenerowany kod SQL zaczyna się od sp_executesql
po którym następuje zapytanie, a następnie jest uruchamiane jako zwykłe zapytanie - tj. cmd.CommandType = CommandType.Text
, jeśli zaczyna się od exec
, są szanse, że jest uruchamiany jako przechowywany proces. Upewnij się, że otrzymujesz poprawny kod SQL wygenerowany dla typu zapytania, które próbujesz uruchomić.