Search code examples
entity-frameworkasp.net-mvc-4sql-server-profiler

SQL Server Profiler - Why are some calls RPC:Completed and Some Calls SQL:BatchCompleted


I will be the first to admit that I often get confused when I use SQL Server profiler.

Having said that, I decided to fire it up to see the SQL that was being generated by experimenting with the Include method of a Db Set. I was going through the music store example where there are Albums, Artists, and Genres.

One thing I noticed was that some calls had an event class of SQL:BatchCompleted while others had an event class of RPC:Completed. It seemed like the lazy load calls were being traced under the RPC event class.

What is the difference was between these two event classes and why does lazy loading result in an event class of RPC:Completed?


Solution

  • BatchCompleted means TSQL code (e.g. selects) have completed. RPC:Completed means stored proc has completed. It could be that EF executes SQL code dynamically using sp_executesql so you get RPC:Completed.