Tablas temporales en SQL Server 2016 y Azure SQL Database v12

28
Tablas temporales en SQL Server 2016 y Azure SQL Database v12 Jose Redondo Microsoft Data Platform MVP Latam (Avanet & FirstCloud) | USA (ITProCamp)

Transcript of Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Page 1: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Tablas temporales enSQL Server 2016 yAzure SQL Database v12

Jose RedondoMicrosoft Data Platform MVP

Latam (Avanet & FirstCloud) | USA (ITProCamp)

Page 2: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Quien soy?Jose RedondoData Platform MVP Latam | Arquitecto de datos | Experto en soluciones de Inteligencia de Negocio y Bodegas de datos | Consultor | Conferencista Microsoft en Latinoamérica y USA

Amante del compartir el conocimiento tecnológico y la buena cultura

Twitter: @redondojLinkedIn: linkedin.com/in/redondojBlog: redondoj.wordpress.comE-Mail: [email protected]

Page 3: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Agenda• Que es?• Porque temporal?• Como trabajan?• Sintaxis de Comandos T-SQL• Como funciona “System-Time”?• Como consultarlas?• Limitaciones• Demos

Page 4: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Que es?• Nuevo tipo de tabla de

usuario.• Tiene como objetivo

mantener un completo historial de cambios en los datos.• Permite análisis de tiempo

por su contenido.• Es administrado por el

motor de base de datos.• Es referenciado a otra tabla

espejo (Mirrored Schema).

Page 5: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Porque Temporal?• Orígenes de datos reales dinámicas.• Su uso no involucra escenarios de tomas

de decisiones empresariales.Casos de usos:

• Auditar cambios.• Permite analizar los datos conociendo el pasado

de su uso.• Reproduce el estado de los datos desde cualquier

punto anterior.• Calcula tendencias de escenarios empresariales

en el tiempo.• Mantiene SCD (Slowly Changing Dimension).• Recuperación de cambios de datos

circunstanciales producto de errores de aplicaciones.

Page 6: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Como trabajan?No hay cambio en el modelo de programación Nueva perspectiva

INSERT / BULK INSERT

UPDATE

DELETE

MERGE

DML SELECT * FROM temporal

Querying

CREATE temporal TABLE PERIOD FOR SYSTEM_TIME…

ALTER regular_table TABLE ADD PERIOD…

DDL

FOR SYSTEM_TIMEAS OF FROM..TOBETWEEN..ANDCONTAINED IN

Temporal Querying

Page 7: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Tabla Temporal (Datos actuales)

Insert / Bulk Insert

* Antigua versión

Update */ Delete *

Tabla Histórica

Tipo de datos Datatime2

Page 8: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Sintaxis de comandos T-SQL

Page 9: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Sintaxis de comandos T-SQL

Page 10: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Comando BETWEENSELECT * FROM Administracion.ProveedoresFOR SYSTEM_TIME BETWEEN @FechaInicio AND @FechaFinWHERE ID_Proveedores = 42

Proporciona información precisa sobre los datos almacenados en cualquier punto en el tiempo, o entre 2 puntos en el tiempo.

Hay dos conjuntos de escenarios de sistemas ortogonales en cuanto a datos temporales:

• SYSTEM(TRANSACTION)-TIME• APPLICATION-TIME

Page 11: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Como funciona “System-Time”?Tabla Temporal (Datos actuales)

Consultas Temporales * (Citas medicas, Itinerario de vuelos, etc.)

Tabla Histórica

Consultas recurrentes (Data actual)

* Incluye Versión Histórica

Page 12: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Como consultarlas?Expresión Establecer resultados

AS OF <date_time> SysStartTime < = date_time AND SysEndTime > date_time

FROM <start_date_time> TO <end_date_time>

SysStartTime < end_date_time AND SysEndTime > start_date_time

BETWEEN <start_date_time> AND <end_date_time>

SysStartTime < = end_date_time AND SysEndTime > start_date_time

CONTAINED IN (<start_date_time>, <end_date_time>

SysStartTime > = start_date_time AND SysEndTime < = end_date_time

Page 13: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Limitaciones• Una tabla temporal debe tener una clave principal definida.• Las tablas históricas no puede tener restricciones como clave principal, clave

foránea, constraints de tabla o columna.• Los comandos INSERT y UPDATE no puede hacer referencia a las columnas de

periodo de SYSTEM_TIME.• TRUNCATE TABLE no se admite mientras SYSTEM_VERSIONING está activado.• No se permite la modificación directa de los datos en una tabla histórica.• Los desencadenadores (Triggers) INSTEAD OF no es permitido en la tabla

actual y la histórica. Los desencadenadores AFTER son solamente permitidos en la actual tabla.

• El comando REPLICATION es permitido limitadamente para algunas propiedades de los objetos de datos en contexto.

Page 14: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Demos

Page 15: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Preguntas & Respuestas

Page 16: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Recursos• Documentación MSDN• Channel 9

Page 17: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Anexos

Page 18: Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Page 19: Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Page 20: Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Page 21: Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Page 22: Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Page 23: Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Page 24: Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Page 25: Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Page 26: Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Page 27: Tablas temporales en SQL Server 2016 y Azure SQL Database v12
Page 28: Tablas temporales en SQL Server 2016 y Azure SQL Database v12

Gracias por su asistenciaSQL Server 2016