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

Přestaňte s verzováním systému, pokud chcete provádět specifické údržbové operace na časové tabulce nebo už nepotřebujete verziovanou tabulku. Tato operace vám dává 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 neodstraníte období SYSTEM_TIME, systém bude i nadále aktualizovat sloupce období při každé 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, které používají časová rozšíření dotazů, například odkazují 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);

Pokud chcete časovou tabulku vrátit zpět na nečasovou, můžete vynechat periodu.

ALTER TABLE dbo.Department
    DROP PERIOD FOR SYSTEM_TIME;

Dočasné odebrání SYSTEM_VERSIONING

Následující operace vyžadují nastavení systémového verzování na:OFF

  • Odebrání nepotřebných dat z historie (DELETE nebo TRUNCATE)
  • Odstraně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.

Když znovu zapnete systémové verzování, zadejte HISTORY_TABLE argument. Pokud ne, systém vytvoří novou tabulku historie a přiřadí ji k té současné. Původní historická tabulka může stále existovat jako normální tabulka, ale už není spojena s aktuální tabulkou.

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 TRANSACTION;