En la presente exposición, les mostrare de forma sencilla a través de demostraciones reales sobre como debemos entender el concepto sobre tablas temporales, las también llamadas tablas versionadas por el sistema; como reciente caracteristica añadida al servidor SQL en su versión 2016 teniendo finalmente como resultado, el mantener automáticamente el historial de los datos en la tabla.
El uso de las tic en la vida ,lo importante que son
Tablas temporales en SQL Server 2016 y Azure SQL Database v12
1. Tablas temporales en
SQL Server 2016 y
Azure SQL Database v12
Jose Redondo
Microsoft Data Platform MVP
Latam (Avanet & FirstCloud) | USA (ITProCamp)
2. Quien soy?
Jose Redondo
Data 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: @redondoj
LinkedIn: linkedin.com/in/redondoj
Blog: redondoj.wordpress.com
E-Mail: redondoj@gmail.com
3. Agenda
• Que es?
• Porque temporal?
• Como trabajan?
• Sintaxis de Comandos T-SQL
• Como funciona “System-Time”?
• Como consultarlas?
• Limitaciones
• Demos
4. 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).
5. 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.
6. 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_TIME
AS OF
FROM..TO
BETWEEN..AND
CONTAINED IN
Temporal Querying
7. Tabla Temporal (Datos actuales)
Insert / Bulk Insert
* Antigua versión
Update */ Delete *
Tabla Histórica
Tipo de datos Datatime2
10. Comando BETWEEN
SELECT * FROM Administracion.Proveedores
FOR SYSTEM_TIME BETWEEN @FechaInicio AND @FechaFin
WHERE 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
11. 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
12. 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
13. 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.