temporal tables sql server 2016€¦ · handling data involving time, being related to the slowly...
TRANSCRIPT
![Page 1: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/1.jpg)
Temporal Tablesin
SQL Server 2016SE A N PE A R CE
![Page 2: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/2.jpg)
Temporal
![Page 3: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/3.jpg)
Not to be confused with Templar
![Page 4: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/4.jpg)
Temporal databaseFrom Wikipedia, the free encyclopedia
• A temporal database is a database with built-in support for handling data involving time, being related to the slowly changing dimension concept
• More specifically the temporal aspects usually include a time period during which a fact stored in the database is considered to be true.
• Temporal databases are in contrast to current databases, which store only facts which are believed to be true at the current time.
![Page 5: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/5.jpg)
Temporal Tables in SQL Server 2016
• SQL Server 2016 introduces system-versioned temporal tables.
• Temporal is a feature that was introduced in ANSI SQL 2011.
• Temporal table – a user table that keeps a history of data changes.
• System-versioned – The period for each row is system managed.
• Every temporal table has two period columns (datetime2).
• Also references a table used to store the previous version of the row.
• Users may or may not specify an existing history table.
![Page 6: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/6.jpg)
Object ExplorerSupport for temporal tables in SQL Server Management Studio
![Page 7: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/7.jpg)
Object ExplorerSupport for temporal tables in SQL Server Management Studio
![Page 8: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/8.jpg)
Use cases for Temporal Tables
• Auditing data changes and performing data forensics.
• Reconstructing state of the data as of any time in the past.
• Calculating trends over time.
• Maintaining a slowly changing dimension for decision support.
• Recovering from accidental data changes and application errors.
![Page 9: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/9.jpg)
Temporal – How it Works
CREATE TABLE dbo.Employee
([EmployeeID] int NOT NULL PRIMARY KEY CLUSTERED,
[Name] nvarchar(100) NOT NULL,
[Position] varchar(100) NOT NULL,
[Department] varchar(100) NOT NULL,
[Address] nvarchar(1024) NOT NULL,
[AnnualSalary] decimal (10,2) NOT NULL,
[ValidFrom] datetime2 (2) GENERATED ALWAYS AS ROW START,
[ValidTo] datetime2 (2) GENERATED ALWAYS AS ROW END,
PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo))
WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.EmployeeHistory));
![Page 10: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/10.jpg)
Temporal – How it Works
INSERTS
• The system sets the StartTime column to the start of the transaction.
• The system sets the EndTime column to the max value of 9999-12-31.
DELETES
• The system stores the previous value of the row in the history table.
• The system sets the EndTime column to the end of the transaction.
• The current row is removed.
![Page 11: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/11.jpg)
Temporal – How it Works
UPDATES – History Table
• The system stores the previous value of the row in the history table.
• The system sets the EndTime column to the start of the transaction.
UPDATES – Current Table
• The row is updated with its new value.
• The system sets the StartTime column to the start of the transaction.
• The value for EndTime remains the max value of 9999-12-31.
![Page 12: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/12.jpg)
Temporal – How it Works
MERGES
• The operation behaves as if up to three statements executed.
• These include an INSERT, an UPDATE, and/or a DELETE, depending on the MERGE statement.
![Page 13: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/13.jpg)
How do I query temporal data?
• The SELECT statement FROM<table> clause has a new clause FOR SYSTEM_TIME with five temporal-specific sub-clauses to query data across the current and history tables.
• This new SELECT statement syntax is supported directly on a single table, propagated through multiple joins, and through views on top of multiple temporal tables.
![Page 14: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/14.jpg)
How do I query temporal data?
SELECT * FROM Employee
FOR SYSTEM_TIME
BETWEEN '2014-01-01' AND '2015-01-01';
![Page 15: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/15.jpg)
![Page 16: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/16.jpg)
Prerequisites of Temporal Tables
• A primary key must be defined.
• Two datetime2 columns must be defined for the start and end dates.
• INSTEAD OF triggers are not allowed.
• AFTER triggers are only allowed on the current table.
• In-memory OLTP cannot be used.
![Page 17: Temporal Tables SQL Server 2016€¦ · handling data involving time, being related to the slowly changing dimension concept •More specifically the temporal aspects usually include](https://reader033.vdocument.in/reader033/viewer/2022051915/6006554c7a71ac4f8e7f1348/html5/thumbnails/17.jpg)
Limitations of Temporal Tables
• Temporal and history table cannot be FILETABLE.
• The history table cannot have any constraints.
• INSERT and UPDATE statements cannot reference the period columns.
• Data in the history table cannot be modified.
• Modifications on the table are severely limited. These are allowed:
• ALTER TABLE … REBUILD
• CREATE INDEX
• CREATE STATISTICS
• To alter the schema of a temporal table system-versioning has to be disabled.
• Columns cannot be excluded from versioning.