Respostas:
Bem, suponho que você esteja falando principalmente sobre as classes Profiler, mas a explicação permanece assim mesmo.
Um lote SQL é um conjunto de uma ou mais instruções agrupadas e separadas por uma instrução GO. EG: mais instruções SELECT e INSERT formam um lote se tiverem um GO no final.
Uma chamada RPC é uma chamada que vem de um aplicativo cliente para o banco de dados. EG: um serviço Windows, um aplicativo Web, um aplicativo Windows, o que precisar de uma conexão com o banco de dados efetivamente faz uma chamada RPC.
Agora, no Profiler, você verá tudo o que toca no servidor de banco de dados. Um lote do Management Studio, uma chamada RPC (que é um lote ou uma chamada de procedimento armazenado) de um aplicativo externo, uma execução de procedimento do Management Studio.
Cada uma delas é formada por instruções TSQL, portanto, essa classe Profiler é útil caso você queira expandir ainda mais a execução, para ver o que realmente é executado. O que insere, seleciona..etc.
A maneira mais fácil de vê-los no Profiler é habilitar apenas a chamada Final RPC ou Finalizar chamada em lote e você verá todas as estatísticas necessárias (duração, IO, CPU). Em seguida, avance ativando a classe TSQL Statements e vá mais fundo.
Instrução Lote vs T-SQL
Isso está claramente definido no BOL do SQL Server aqui
Um lote é um grupo de uma ou mais instruções Transact-SQL enviadas ao mesmo tempo de um aplicativo para o SQL Server para execução. O Go é um separador de lotes usado na maioria dos aplicativos clientes, incluindo SSMS.
O SQL Server compila as instruções de um lote em uma única unidade executável, chamada de plano de execução. As instruções no plano de execução são executadas uma de cada vez.
Em um termo simples, com base no meu entendimento, o RPC é quando você executa um processo armazenado usando a API do cliente (por exemplo, no método CommandObject. Execute do ADO.net)
Uma explicação mais detalhada é encontrada em um dos grupos de notícias da Internet que estão postando aqui :
RPC "vs" batch "é o modo de execução do TDS que o ADO.NET (ou qualquer cliente do SQL Server) usa. Quando uma instrução SQL simples sem parâmetros é executada, usamos um" batch ". Quando um proc armazenado é executado, usamos RPC (isso não é o mesmo que RPC que a chamada de procedimento remoto de rede independente, apenas chamamos esse modo de RPC no TDS (o protocolo de rede do SQL Server)). Além disso, se você executar um lote com o parâmetro, na verdade, usamos um proc armazenado chamado sp_executesql e passamos a própria instrução SQL e o restante dos parâmetros para ela, para que ela também apareça como RPC.
Pablo Castro
Gerente de Programa - Equipe ADO.NET
Microsoft Corp.
GO
é o terminador de lote aceito e padrão dos clientes populares que usamos (por exemplo, SSMS e sqlcmd), mas vale a pena notar que aGO
string real como terminador de lote pode sofrer alterações e é configurável.