Tutorial: Viaje en el tiempo mediante T-SQL en el nivel de instrucción
En este artículo, aprenderá a viajar en el tiempo en el almacenamiento en el nivel de instrucción mediante T-SQL. Esta característica le permite consultar los datos tal como aparecieron en el pasado dentro de un período de retención.
Nota:
Actualmente, solo se usa la zona horaria de hora universal coordinada (UTC) para el viaje en el tiempo.
Viaje en el tiempo
En este ejemplo, actualizaremos una fila y mostraremos cómo consultar fácilmente el valor anterior mediante la sugerencia de consulta FOR TIMESTAMP AS OF
.
En la pestaña Inicio de la cinta de opciones, seleccione Nueva consulta SQL.
En el editor de consultas, pegue el código siguiente para crear la vista
Top10CustomerView
. Seleccione Ejecutar para ejecutar la consulta.CREATE VIEW dbo.Top10CustomersView AS SELECT TOP (10) FS.[CustomerKey], DC.[Customer], SUM(FS.TotalIncludingTax) AS TotalSalesAmount FROM [dbo].[dimension_customer] AS DC INNER JOIN [dbo].[fact_sale] AS FS ON DC.[CustomerKey] = FS.[CustomerKey] GROUP BY FS.[CustomerKey], DC.[Customer] ORDER BY TotalSalesAmount DESC;
En el Explorador, compruebe que puede ver la vista
Top10CustomersView
recién creada expandiendo el nodo Vista en el esquemadbo
.Cree otra nueva consulta, similar a la del paso 1. En la pestaña Inicio de la cinta de opciones, seleccione Nueva consulta SQL.
En el editor de consultas, pegue el siguiente código. Con esta acción se actualiza el valor de columna
TotalIncludingTax
a200000000
para el registro que tiene el valorSaleKey
de22632918
. Seleccione Ejecutar para ejecutar la consulta./*Update the TotalIncludingTax value of the record with SaleKey value of 22632918*/ UPDATE [dbo].[fact_sale] SET TotalIncludingTax = 200000000 WHERE SaleKey = 22632918;
En el editor de consultas, pegue el siguiente código. La función
CURRENT_TIMESTAMP
de T-SQL devuelve la marca de tiempo UTC actual como datetime. Seleccione Ejecutar para ejecutar la consulta.SELECT CURRENT_TIMESTAMP;
Copie el valor de marca de tiempo devuelto al Portapapeles.
Pegue el código siguiente en el editor de consultas y reemplace el valor de marca de tiempo por el valor de marca de tiempo actual obtenido del paso anterior. El formato de sintaxis de marca de tiempo es
YYYY-MM-DDTHH:MM:SS[.FFF]
.Quite los ceros finales, por ejemplo:
2024-04-24T20:59:06.097
.En el ejemplo siguiente se devuelve la lista de los diez principales clientes por
TotalIncludingTax
, incluido el nuevo valor deSaleKey
22632918
. Seleccione Ejecutar para ejecutar la consulta./*View of Top10 Customers as of today after record updates*/ SELECT * FROM [WideWorldImporters].[dbo].[Top10CustomersView] OPTION (FOR TIMESTAMP AS OF '2024-04-24T20:59:06.097');
Pegue el código siguiente en el editor de consultas y reemplace el valor de marca de tiempo a un momento anterior a la ejecución del script de actualización para actualizar el valor
TotalIncludingTax
. Esto devolvería la lista de los diez principales clientes antes de queTotalIncludingTax
se actualizara paraSaleKey
22632918. Seleccione Ejecutar para ejecutar la consulta./*View of Top10 Customers as of today before record updates*/ SELECT * FROM [WideWorldImporters].[dbo].[Top10CustomersView] OPTION (FOR TIMESTAMP AS OF '2024-04-24T20:49:06.097');
Para obtener más ejemplos, visite Procedimiento para realizar consultas mediante el viaje en el tiempo en el nivel de instrucción.