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?
fonte
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?
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.
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.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 :
fonte