Не уверен, что это то, что вы ищете, но я создал метод расширения для SqlCommand
с именем ToSql()
, который объявляет все параметры, устанавливает буквальные значения, а затем использует CommandText для генерации автономного SQL заявление. Затем я могу скопировать и вставить инструкцию в SSMS и продолжить отладку оттуда.
Хотел бы я поделиться с вами кодом, но это собственность моего работодателя. Кроме того, это было довольно легко написать, и это забавное упражнение. Я просто опишу, как это работает.
Например:
var command = new SqlCommand(@"
SELECT *
FROM Table
WHERE
Column1 = @Param1
AND Column2 = @Param2
");
command.Parameters.AddWithValue("@Param1", 555);
command.Parameters.AddWithValue("@Param2", "StackOverflow's cool");
...
Теперь, во время отладки, я просто добавляю часы для command.ToSQL()
и получаю следующий текст:
DECLARE @Param1 INT SET @Param1 = 555
DECLARE @Param2 VARCHAR(MAX) SET @Param2 = 'StackOverflow''s cool'
SELECT *
FROM Table
WHERE
Column1 = @Param1
AND Column2 = @Param2
Для хранимых процедур результат выглядит следующим образом:
DECLARE @Param1 INT SET @Param1 = 555
DECLARE @Param2 VARCHAR(MAX) SET @Param2 = 'StackOverflow''s cool'
EXECUTE Some_Stored_Procedure
@Param1 = @Param1
,@Param2 = @Param2
Я бы не рекомендовал использовать этот код в рабочей среде, и он может быть небезопасен против атак с использованием SQL-инъекций, но это невероятно полезный инструмент отладки!