¿Cuál es la diferencia entre el lote SQL, la declaración T-SQL y la llamada a procedimiento remoto?
¿Cómo puedo saber si parte del código T-SQL es un lote o una declaración?
fuente
¿Cuál es la diferencia entre el lote SQL, la declaración T-SQL y la llamada a procedimiento remoto?
¿Cómo puedo saber si parte del código T-SQL es un lote o una declaración?
Bueno, supongo que estás hablando principalmente de las clases de Profiler, pero la explicación se mantiene de todos modos.
Un lote SQL es un conjunto de una o más declaraciones agrupadas y separadas por una declaración GO. EG: más instrucciones SELECT e INSERT forman un lote si tienen un GO al final.
Una llamada RPC es una llamada que proviene de una aplicación cliente a la base de datos. Por ejemplo: un servicio de Windows, una aplicación web, una aplicación de Windows, cualquier cosa que necesite una conexión a la base de datos en realidad hace una llamada RPC.
Ahora, en Profiler verá todo lo que toca el servidor de la base de datos. Un lote de Management Studio, una llamada RPC (que es un lote o una llamada a procedimiento almacenado) desde una aplicación externa, una ejecución de procedimiento desde Management Studio.
Cada uno de ellos está formado por sentencias TSQL, por lo que esta clase Profiler es útil en caso de que desee expandir aún más la ejecución, para ver qué se ejecuta realmente. Lo que inserta, selecciona ... etc.
La forma más fácil de verlos en Profiler es habilitar solo Finalizar llamada RPC o Finalizar llamada por lotes y verá allí todas las estadísticas necesarias (duración, IO, CPU). Luego, avance más habilitando la clase de declaraciones TSQL y profundice.
GO
es el terminador de lotes aceptado y predeterminado de los clientes populares que usamos (es decir, SSMS y sqlcmd), pero vale la pena señalar que laGO
cadena real como terminador de lotes puede cambiar y es configurable.Declaración Batch vs T-SQL
Esto está claramente definido en SQL Server BOL aquí
Un lote es un grupo de una o más instrucciones Transact-SQL enviadas al mismo tiempo desde una aplicación a SQL Server para su ejecución. Go es un separador de lotes utilizado en la mayoría de las aplicaciones cliente, incluido SSMS.
SQL Server compila las declaraciones de un lote en una sola unidad ejecutable, llamada plan de ejecución. Las declaraciones en el plan de ejecución se ejecutan una a la vez.
En un término simple basado en mi entendimiento, RPC es cuando ejecutas un proceso almacenado usando la API del cliente (por ejemplo, en ADO.net CommandObject. Método de ejecución)
Una explicación más detallada se encuentra en uno de los grupos de noticias de Internet que publican aquí :
fuente