Qual é a diferença entre lote SQL, instrução T-SQL e chamada de procedimento remoto?
Como posso saber se parte do código T-SQL é um lote ou instrução?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Bem, suponho que você esteja falando principalmente sobre as classes do Profiler, mas a explicação permanece de qualquer maneira.
Um lote SQL é um conjunto de uma ou mais instruções agrupadas e separadas por uma instrução GO. EX.: 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. Por exemplo: um serviço do Windows, um aplicativo da Web, um aplicativo do Windows, o que quer que precise de uma conexão com o banco de dados, na verdade, faz uma chamada RPC.
Agora, no Profiler, você verá tudo o que toca o 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 um deles é formado por instruções TSQL, então esta 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 visualizá-los no Profiler é habilitar apenas End RPC call ou End batch call e você verá todas as estatísticas necessárias (duração, IO, CPU). Em seguida, vá adiante habilitando a classe TSQL Statements e aprofunde-se.
Instrução em lote vs T-SQL
Isso está claramente definido no SQL Server BOL 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. Go é um separador de lote usado na maioria dos aplicativos cliente, 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 baseado no meu entendimento RPC é quando você executa um proc armazenado usando a API do cliente (por exemplo, no ADO.net CommandObject. Execute o método)
Uma explicação mais detalhada é encontrada em uma das postagens do grupo de notícias da Internet aqui :
Então, basicamente, o nome RPC é confuso porque no SQL Profiler, ele está nas categorias de procedimento armazenado.