tablas temporales en sql server 2016 y azure sql database v12
TRANSCRIPT
Tablas temporales enSQL Server 2016 yAzure SQL Database v12
Jose RedondoMicrosoft Data Platform MVP
Latam (Avanet & FirstCloud) | USA (ITProCamp)
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]
Agenda• Que es?• Porque temporal?• Como trabajan?• Sintaxis de Comandos T-SQL• Como funciona “System-Time”?• Como consultarlas?• Limitaciones• Demos
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).
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.
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
Tabla Temporal (Datos actuales)
Insert / Bulk Insert
* Antigua versión
Update */ Delete *
Tabla Histórica
Tipo de datos Datatime2
Sintaxis de comandos T-SQL
Sintaxis de comandos T-SQL
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
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
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
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.
Demos
Preguntas & Respuestas
Recursos• Documentación MSDN• Channel 9
Anexos
Gracias por su asistenciaSQL Server 2016