What is the difference between SQL batch, T-SQL statement and Remote Procedure Call?
How can I tell if part of the T-SQL code is a batch or statement?
Sql-server – Difference between SQL batch, statement and RPC
sql server
Related Question
- SQL Server – Difference Between character_maximum_length and character_octet_length
- SQL Server 2012 – List of Batch Aborting Errors
- Sql-server – Unable to get output variable of Oracle procedure using Sql linked server
- Sql-server – the difference between “OPTION (OPTIMIZE FOR UNKNOWN)” and “OPTION (USE HINT(‘DISABLE_PARAMETER_SNIFFING’))”
- SQL Server – Difference Between is_published and is_merge_published
Best Answer
Well, I suppose you're talking mostly about the Profiler classes, but the explanation stands anyway.
An SQL batch is a set of one or more statements grouped together and separated by a GO statement. EG: more SELECT and INSERT statements form a batch if they have a GO at the end.
A RPC call is a call that comes from a client application to the database. EG: a windows service, a web application, a windows app, whatever needs a connection to the database actually makes a RPC call.
Now, in Profiler you'll see everything that touches the database server. A batch from Management Studio, an RPC call (which is either a batch or a stored procedure call) from an external application, a procedure execution from Management Studio.
Each of them is formed of TSQL statements, so this Profiler class is useful in case you want to expand the execution further, to see what's actually executed. What inserts, selects..etc.
The easiest way to look at them in Profiler is to enable only End RPC call, or End batch call and you'll see there all the statistics needed (duration, IO, CPU). Then, move further by enabling TSQL Statements class and dig deeper.