Это просто артефакт того, как вызовы RPC отображаются в профилировщике.Существует два основных типа клиентских запросов: язык (тип 0x01) и RPC (тип 0x03), как описано в документации Бесплатный протокол TDS .Когда вызов представляет собой пакет SQL с параметрами, вызов RPC будет иметь тип 0x03 с длиной 0x0A, что является сокращением для sp_executesql
.
Итак, вы видите, что действительно происходит, когда клиент1006 * любой клиент , отправляет пакет, содержащий параметры, и будет выглядеть так, как будто sp_executesql
вызывается.Это верно для ODBC, для OleDB, SqlClient, Sql Native Client, как я уже сказал, любой клиент.Так что ни Entity Framework, ни ADO.Net на самом деле не вызывают sp_executesql (на самом деле процедура даже не вызывается, хотя запросы выполняются так, как если бы она была вызвана. Сложно ...).Это артефакт протокола, который происходит каждый раз, когда вы добавляете @parameter
к вашему запросу.