Mi pregunta es simple: ¿Cuáles son las diferencias / similitudes / cardinalidades entre
- Actas
- Lotes
- Conexiones y
- Declaraciones
en SQL Server?
Hasta donde entiendo, una conexión es un canal de comunicación único entre una instancia de SQL Server y un cliente dentro del cual se ejecutan colecciones de declaraciones agrupadas como lotes. Un lote se asigna implícita o explícitamente a una o varias transacciones. ¿Es esto correcto?
Las transacciones y los lotes son dos conceptos independientes. Ambos se pueden usar en una configuración de uno a muchos.
Los bloques de transacciones son una sola "unidad de trabajo", un concepto que SQL comprometido debe funcionar completamente o no funcionar en absoluto. Por ejemplo, si actualiza dos tablas vinculadas entre sí; ambos deben tener éxito para que se confirme el cambio de datos. [ https://msdn.microsoft.com/en-us/library/ms174377.aspx]
Batch es un concepto de Microsoft. Con las herramientas creadas por Microsoft, como sqlcmd y osql, el lote simplemente garantiza un único plan de ejecución. Por ejemplo, si crea una variable y la usa fuera del lote, la herramienta arrojará un error. [ https://msdn.microsoft.com/en-us/library/ms188037.aspx]
Por lo tanto, puede tener varios lotes que actualizan varias tablas dentro de un bloque de transacciones. En la medida en que no violen los planes de ejecución de lotes individuales que es.
Además, dentro de un lote, puede tener múltiples bloques de transacciones, asegurando la integridad de los datos entre las entidades de la base de datos, como las tablas.
La conexión es simplemente el apretón de manos de comunicación que aprueba la ejecución de consultas en el servidor.
Las declaraciones son líneas individuales que forman una consulta. GO (separador de lotes T-Sql) y BEGIN TRANSACTION (ANSI SQL para iniciar un nuevo bloque de transacciones) son ambas declaraciones.
fuente
Los lotes y las transacciones existen al mismo nivel. Un lote es una colección de comandos SQL no relacionados. Una transacción es una colección de comandos SQL que funcionan (en lo que respecta a todos los demás usuarios de esa base de datos) como una sola declaración.
fuente