あなたは、必要にオフバージョン管理やシステムを回したときに、データの連続性を維持するために、履歴テーブルの名前を提供します。この動作は、ALTER TABLEのドキュメントに記載されています。
HISTORY_TABLE引数を使用しない場合、システムは現在のテーブルのスキーマに一致する新しい履歴テーブルを生成し、2つのテーブル間にリンクを作成して、システムが現在のテーブルの各レコードの履歴を履歴テーブル。
こちらがデモです。ドキュメントからサンプルテーブルを作成します。
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);
これにより、という名前の履歴テーブルが作成されMSSQL_TemporalHistoryFor_1253579504
ます。次に、システムのバージョン管理を無効にしてから有効にします。
ALTER TABLE dbo.Employee SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE dbo.Employee SET (SYSTEM_VERSIONING = ON);
そして私はあなたの正確な状況にいます:
次に、すべてをクリーンアップします。
ALTER TABLE dbo.Employee SET (SYSTEM_VERSIONING = OFF);
DROP TABLE dbo.Employee;
DROP TABLE dbo.MSSQL_TemporalHistoryFor_1253579504;
DROP TABLE dbo.MSSQL_TemporalHistoryFor_1253579504_D0055BB4;
次に、特定の履歴テーブル名でテーブルを作成します。
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));
次に、システムのバージョン管理をオフにしてからオンにしますが、履歴テーブル名を指定し続けます。
ALTER TABLE dbo.Employee SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE dbo.Employee SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.EmployeeHistory));
注:特定の状況では、この構文を使用して、失われた1つの履歴テーブルをベーステーブルに「再アタッチ」できるはずです。
余分なテーブルはありません:
お持ち帰り
テンポラルテーブルを作成するとき、またはシステムのバージョン管理を有効にするときは、常に履歴テーブル名を明示的に指定します。
MSのドキュメントでは、特に、システムバージョン付きテンポラルテーブルページでのシステムバージョン管理の停止でこれを呼び出しています。
システムのバージョン管理をオンに戻すときは、必ずHISTORY_TABLE引数を指定してください。そうしないと、新しい履歴テーブルが作成され、現在のテーブルに関連付けられます。元の履歴テーブルは通常のテーブルとして存在し続けますが、現在のテーブルには関連付けられません。