Sdílet prostřednictvím


Zastavení systémového verzování na systémově verzované časové tabulce

Platí na: SQL Server 2016 (13.x) a novější verze Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Možná budete chtít ukončit správu verzí dočasné tabulky buď dočasně, nebo trvale. Můžete to provést nastavením klauzule SYSTEM_VERSIONING na OFF.

Nastavte SYSTEM_VERSIONING = VYPNUTO

Pokud chcete v časové tabulce provádět určité operace údržby nebo už nepotřebujete verzovanou tabulku, zastavte systémovou verzování. Z důvodu této operace získáte dvě nezávislé tabulky:

  • Aktuální tabulka s definicí období
  • Tabulka historie jako běžná tabulka

Remarks

Tabulka historie přestane zaznamenávat aktualizace během SYSTEM_VERSIONING = OFF.

V dočasné tabulce nedojde ke ztrátě dat, když nastavíte SYSTEM_VERSIONING = OFF nebo vypustíte SYSTEM_TIME období.

Když nastavíte SYSTEM_VERSIONING = OFF a neodeberete období SYSTEM_TIME, systém bude nadále aktualizovat sloupce období pro každou operaci vložení a aktualizace. Odstranění v aktuální tabulce jsou trvalé.

Abyste smazali sloupce období, musíte vynechat období SYSTEM_TIME. Chcete-li odebrat sloupce období, použijte ALTER TABLE <table> DROP <column>;. Další informace naleznete v tématu Změna schématu dočasné tabulky s verzí systému.

Při nastavování SYSTEM_VERSIONING = OFFmohou všichni uživatelé s dostatečnými oprávněními změnit schéma a obsah tabulky historie nebo dokonce trvale odstranit tabulku historie.

Nemůžete nastavit SYSTEM_VERSIONING = OFF, pokud máte jiné objekty vytvořené pomocí SCHEMABINDING pomocí dočasných rozšíření dotazů, například odkazování na SYSTEM_TIME. Toto omezení zabraňuje selhání těchto objektů, pokud nastavíte SYSTEM_VERSIONING = OFF.

Trvalé odebrání SYSTEM_VERSIONING

Tento příklad trvale odebere SYSTEM_VERSIONING a odstraní sloupce období. Odebrání sloupců období je volitelné.

ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = OFF);

-- Optionally, DROP PERIOD if you want to revert temporal table to a non-temporal
ALTER TABLE dbo.Department
DROP PERIOD FOR SYSTEM_TIME;

Dočasné odebrání SYSTEM_VERSIONING

Následující seznam obsahuje seznam operací, které vyžadují nastavení správy verzí systému na OFF:

  • Odebrání nepotřebných dat z historie (DELETE nebo TRUNCATE)
  • Odebrání dat z aktuální tabulky bez verzování (DELETE, TRUNCATE)
  • Oddíl SWITCH OUT z aktuální tabulky
  • Rozděl SWITCH IN do tabulky historie

Tento příklad dočasně zastaví SYSTEM_VERSIONING, abyste mohli provádět konkrétní operace údržby. Pokud správu verzí dočasně zastavíte jako předpoklad pro údržbu tabulek, důrazně doporučujeme tuto změnu provést uvnitř transakce, aby byla zachována konzistence dat.

Při zpětném zapnutí správy verzí systému nezapomeňte zadat argument HISTORY_TABLE. Pokud to neuděláte, vytvoří se nová tabulka historie a přidružuje se k aktuální tabulce. Původní tabulka historie může stále existovat jako normální tabulka, již není přidružena k aktuální tabulce.

BEGIN TRANSACTION;

ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = OFF);

TRUNCATE TABLE [History].[DepartmentHistory]
WITH (PARTITIONS(1, 2));

ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = History.DepartmentHistory));

COMMIT;