NEW VERSION Create and Delete Temporal Tables
------- NEUE VERSION ---------------
Hallo,
Europäische Datenschutz-Grundverordnung und Temporal Tables
Die europäische Datenschutzgrundverordnung ist ein guter Grund, einen Kunden davon zu überzeugen, zu SQL Server 2017 Express zu wechseln.
Dort können Sie die TemporalTables als automatisch generierte Protokollierung für persönliche Daten verwenden.
(Zwei meiner Kunden haben sich nur deshalb auf den SQL Server 2017 Express als Backend gewechselt)
Ab 2016 können Sie sogenannte temporale Tabellen verwenden. (= Automatische Historie für die Datensätze)
Bei Verwendung in SQL 2017 oder später wird automatisch ein Aufbewahrungszeitraum festgelegt
Neue Version - erweitert um Ideen von Uwe Ricken
das Meiste ist jetzt parametrisierbar. (Im Text der Stored Proc beschrieben)
Laut "meines Standards" ist das
a) Die Verlaufstabelle hat den Namen: "<tablename>_History" und wird in demselben Schema wie die "ursprüngliche" Tabelle erstellt.
b) HistTbl_ValidFrom und HistTbl_ValidTo sind die Namen der zwei versteckten obligatorischen Datumsfelder
c) Nur SQL 2017: Der Aufbewahrungszeitraum wird im Proc auf 24 Monate festgelegt
Hier 3 Prozeduren zum a) Erstellen oder b) Aktivieren und Deaktivieren (verwendet ggf. Erstellen) oder c) Löschen der temporalen Tabellen
Gerade getestet in 2017 Express Edition: Wenn die temporäre Tabelle erstellt wird, wird automatisch ein PK hinzugefügt, so dass
Die * neue * SQL 2017 Funktionalität "History Retention" einfach funktioniert.
Diese Proc ist auf eine feste Aufbewahrungszeit von 24 Monaten eingestellt, aber Sie können dies leicht in proc ändern.
Proc: "History_Retention_Period = 24 Months"
Mit diesen 3 Procs ist die Verwendung von Temporal Tables "ein Kinderspiel"
Permanentes Löschen: Da Sie die beiden Standard-Constrains für HistTbl_ValidFrom und HistTbl_ValidTo löschen müssen, bevor Sie die Felder selbst löschen können,
funktioniert die Lösch-Proc nur, wenn die Default-Constrains mit dem Create-Proc erstellt werden, ansonsten können/werden die Constrain-Namen unterschiedlich sein.
PS: In SSMS ändert sich das Kontextmenü der rechten Maustaste drastisch, wenn eine Tabelle "System-Versioned" ist, wie MS es nennt.
Tipp: Wenn Sie den Baum der Tabelle öffnen, ist der erste Eintrag die History-Tabelle. (Wenn nicht: Aktualisieren)
Da diese Tabelle NICHT "System-Versioned" ist, hat sie fast das "normale" Kontextmenü der rechten Maustaste mit mindestens den Select-Skripten
Wenn Sie das Select-Skript verwenden und Sie einfach den Text "_History" in FROM löschen, dann haben Sie die Auswahl für die eigentlich gewünsche "Haupt-Tabelle"
Die drei Scripte sowie einige Grund-Views, (ebenfalls neuere Version, die 3 Scripts sind darin enthalten) die ich extrem prakisch finde, sind hier in Onedrive im Ordner TemporalTables zu finden:
---------------------- english version --------------
Hallo,
European GDPR and TemporalTables
The European GDPR is a good reason to convince a customer to change to SQL Server Express.
There you can use the TemporalTables as an automatic generated Logging for personal data.
(Two of my customers only because of that changed to SQL Server 2017 Express)
Beginning with 2016 you can use so called temporal tables. (= Automatic History for the records)
When used in 2017 or later, then automatic a Retention Period is set
New Version available
Most things can be parametrisized. (Look into the text of the SP)
According to "my default" which is
a) History Table is named: <tablenamne>_History and is created in same schema than "original" table.
b) HistTbl_ValidFrom and HistTbl_ValidTo are the names of the two hidden mandatory date-fields
c) SQL 2017 only: Retention Period is set in proc to 24 month
Here 3 Procedures to a) Create or b) Enable and Disable or c) Delete permanent the temporal tables
Just tested in 2017 Express Edition: When the temporal table is created, automatically a PK is added so that
the *new* SQL 2017 functionality "History Retention" just works.
This proc is set to a fixed 24 month retention time, but you can change that easily in proc.
Proc: "History_Retention_Period = 24 MONTHs"
With this 3 Procs, the use of Temporal Tables is "a snap"
Permanent deletion: As you need to delete the two default-constrains for HistTbl_ValidFrom and HistTbl_ValidTo before you can delete the fields itself,
the delete Proc only works, if the default-constrains are created with the Create proc, otherwise the constrain-names may be different.
PS: In SSMS the right mouse context menu changes drastically, if a table is "System-Versioned" as they call it.
Hint: If you open the tree of the table, the first entry is the History table. (If not: Refresh)
As this table is NOT "System-Versioned" it has nearly the "normal" right mouse context menu with at least the Select Scripts
If you use that Select scripts and you just delete the "_History" in FROM then you have the Select for the "Main-Table"
The three scripts and some basic views (also newer version - including the 3 scripts) which I find extremely practical, can be found here in Onedrive in Subdirectory TemporalTables:
Print article | This entry was posted by klausobd on 19.10.18 at 03:45:00 . Follow any responses to this post through RSS 2.0. |