SQL Server: способ просмотра окончательного запроса с заполненными параметрами - PullRequest
4 голосов
/ 19 марта 2011

Есть ли способ увидеть окончательный запрос, который передается в базу данных SQL Server из моего приложения C #?

Например, я получил запрос:

SELECT * FROM mytable WHERE x = @yyyy;

Это создает и объект SQLCommand

SqlCommand cmd = new SqlCommand("SELECT * FROM mytable WHERE x = @yyyy");

Плюс мне нужно передать параметр:

cmd.Parameters.Add("@yyyy","MyValue");

То, что я хочу увидеть (в отладке в C # или где-то в SQL Server Management Studio), это:

SELECT * FROM mytable WHERE x = MyValue

Где я могу найти такой запрос ?!

С наилучшими пожеланиями

Ответы [ 4 ]

6 голосов
/ 19 марта 2011

Где я могу найти такой запрос?!

Вы не можете.Такой запрос никогда не существует.Значения не подставляются в SQL.

Я думаю, что на самом деле вызывается sp_executesql, и эта функция принимает параметры отдельно от SQL.Вы можете проверить это с помощью SQL Profiler , чтобы увидеть фактический SQL.


Обновить :

ORDER BY @ descOrAsc

Ваша проблема в том, что параметры могут использоваться только в определенных местах, где разрешены выражения.DESC это не выражение - это зарезервированное слово.Вы не можете использовать параметр, содержащий строку "DESC", вместо записи ключевого слова DESC в запросе.

Кроме того, вы не указали, какой столбец упорядочить.

2 голосов
/ 19 марта 2011

Вы можете запустить SQL Server Profiler и просмотреть все запросы, которые выполняются, чтобы увидеть, что происходит (и скопировать их, вставить в Sql Server Management Studio для выполнения тестов и т. Д.)

1 голос
/ 19 марта 2011

Я ожидаю, что запрос будет передан на SQL Server с параметрами. Не должно быть необходимости создавать полный запрос только для SQL. В этом нет смысла, так как это означает больше конверсий для клиента, сервера или для обоих. На стороне сервера обработчик запросов захочет проанализировать запрос на предложения со значениями - если команда может передавать эти значения напрямую, то есть преимущество в том, что они преобразуются в оператор SQL, а сервер разбирает их на отдельные значения снова?

0 голосов
/ 19 марта 2011

1.Вы можете использовать SQL Profiler. (здесь вы можете увидеть весь процесс) 2.Вы можете записать все свои запросы в таблицу SQL Server. И тогда вы всегда можете получить запросы из этой таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...