tablas temporales en sql server 2016 y azure sql database v12

Post on 11-Jan-2017

373 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

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: redondoj@gmail.com

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

top related