Risposte:
Bene, suppongo che tu stia parlando principalmente delle lezioni di Profiler, ma la spiegazione vale comunque.
Un batch SQL è un insieme di una o più istruzioni raggruppate e separate da un'istruzione GO. Ad esempio: più istruzioni SELECT e INSERT formano un batch se hanno un GO alla fine.
Una chiamata RPC è una chiamata che proviene da un'applicazione client al database. Ad esempio: un servizio Windows, un'applicazione Web, un'app Windows, qualunque cosa necessiti di una connessione al database, effettua effettivamente una chiamata RPC.
Ora, in Profiler vedrai tutto ciò che tocca il server di database. Un batch da Management Studio, una chiamata RPC (che è un batch o una chiamata di procedura memorizzata) da un'applicazione esterna, un'esecuzione della procedura da Management Studio.
Ognuno di essi è formato da istruzioni TSQL, quindi questa classe di Profiler è utile nel caso in cui si desideri espandere ulteriormente l'esecuzione, per vedere cosa viene effettivamente eseguito. Cosa inserisce, seleziona ... ecc.
Il modo più semplice per visualizzarli in Profiler è abilitare solo la chiamata RPC finale o la chiamata batch End e vedrai lì tutte le statistiche necessarie (durata, IO, CPU). Quindi, vai oltre abilitando la classe TSQL Dichiarazioni e scava più a fondo.
Dichiarazione Batch vs T-SQL
Questo è chiaramente definito in BOL di SQL Server qui
Un batch è un gruppo di una o più istruzioni Transact-SQL inviate contemporaneamente da un'applicazione a SQL Server per l'esecuzione. Go è un separatore batch utilizzato nella maggior parte delle applicazioni client incluso SSMS.
SQL Server compila le istruzioni di un batch in un'unica unità eseguibile, denominata piano di esecuzione. Le dichiarazioni nel piano di esecuzione vengono quindi eseguite una alla volta.
In un semplice termine basato sulla mia comprensione, RPC è quando si esegue un proc memorizzato utilizzando l'API client (ad esempio in CommandObject ADO.net. Metodo di esecuzione)
Una spiegazione più dettagliata si trova in uno dei post del newsgroup Internet qui :
RPC "vs" batch "è la modalità di esecuzione TDS utilizzata da ADO.NET (o qualsiasi client SQL Server). Quando viene eseguita una semplice istruzione SQL senza parametri, utilizziamo un" batch ". Quando viene eseguito un stored procedure, usiamo RPC (questo non è lo stesso di RPC della chiamata di procedura remota di rete autonoma, ci capita di chiamare questa modalità RPC in TDS (protocollo di rete di SQL Server)). Inoltre, se si esegue un batch con parametro, in realtà usiamo un stored-proc chiamato sp_executesql, e gli passiamo l'istruzione SQL stessa e il resto dei parametri, quindi appare anche come RPC.
Pablo Castro
Program Manager - Team ADO.NET
Microsoft Corp.
GO
è il terminatore batch accettato e predefinito dei client più diffusi che utilizziamo (ad esempio SSMS e sqlcmd), ma vale la pena notare che laGO
stringa effettiva come terminatore batch è suscettibile di modifiche ed è configurabile.