Посмотрите с помощью SQL Profiler, чтобы увидеть, что на самом деле отправляется на сервер?
Наше приложение вызывает SProcs (что несколько отличается), и мы регистрируем все вызовы Sproc и какие параметры были отправлены; затем мы обновляем журнал, возвращая значение из Sproc (чтобы мы могли сообщать о записях журнала, которые НЕ имеют результата возврата, если произошел какой-то катастрофический сбой)
Затем мы можем повторно запустить любой сбойный SProcs с параметрами, которые ему были заданы, чтобы посмотреть, какие результаты мы получим.
Когда мы повторно запускаем их, мы обертываем их
BEGIN TRANSACTION
EXEC MySproc @FOO='BAR', ...
ROLLBACK
чтобы они не вносили никаких изменений в базу данных