SQLサーバシステム
データベーステーブルに作られたデータ変更の監査証跡を維持する必要がある場合があります.SQL Server 2016は、これを達成するためにTemporalテーブルのサポートを追加しました.
既存のテーブルへのバージョン管理の追加
非時間テーブルは、期間定義を追加し、以下のようにシステムバージョニングを可能にすることによって、システムバージョンのテーブルに変更することができます.
この機能のパワーはそのシンプルさにある.システムのバージョン管理が可能になれば、履歴表を忘れることができます.SQL Serverは私たちの変更の履歴を管理します.私たちは直接メインテーブルを照会することができて、データが下で構文を使用して過去のどんな点で見たかのスナップショットを得ることができました.
システムバージョンの時間表を使用する場合に留意すべき事項については、SQL Server documentationを参照してください.
ソース
https://docs.microsoft.com/en-us/sql/relational-databases/tables/creating-a-system-versioned-temporal-table?view=sql-server-2017
既存のテーブルへのバージョン管理の追加
非時間テーブルは、期間定義を追加し、以下のようにシステムバージョニングを可能にすることによって、システムバージョンのテーブルに変更することができます.
ALTER TABLE myschema.mytable
ADD
SysStartTime DATETIME2(0) GENERATED ALWAYS AS ROW START HIDDEN
CONSTRAINT DF_SysStart DEFAULT SYSUTCDATETIME()
, SysEndTime DATETIME2(0) GENERATED ALWAYS AS ROW END HIDDEN
CONSTRAINT DF_SysEnd DEFAULT CONVERT(DATETIME2 (0), '9999-12-31 23:59:59'),
PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime);
ALTER TABLE myschema.mytable
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = history.trial_mytable));
時間表からの歴史的データの質問この機能のパワーはそのシンプルさにある.システムのバージョン管理が可能になれば、履歴表を忘れることができます.SQL Serverは私たちの変更の履歴を管理します.私たちは直接メインテーブルを照会することができて、データが下で構文を使用して過去のどんな点で見たかのスナップショットを得ることができました.
select *
from myschema.mytable
FOR SYSTEM_TIME AS OF '2020-12-31 17:47:46' ;
もう一つの良いことは、変更だけが履歴表に格納されることです.つまり、テーブルを作成し、有効なバージョン管理を行います.メインテーブルのデータが更新または削除された場合のみ、変更履歴がテーブルに入ります.言い換えると、SQL Serverはメインテーブルと履歴テーブルの間に重複したレコードを作成しません.システムバージョンの時間表を使用する場合に留意すべき事項については、SQL Server documentationを参照してください.
ソース
https://docs.microsoft.com/en-us/sql/relational-databases/tables/creating-a-system-versioned-temporal-table?view=sql-server-2017
Reference
この問題について(SQLサーバシステム), 我々は、より多くの情報をここで見つけました https://dev.to/maniplayground/sql-server-system-versioned-temporal-table-4i99テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol