Systeemversiebeheer op een tijdelijke tabel met systeemversies stoppen
Van toepassing op: SQL Server 2016 (13.x) en latere versies
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Mogelijk wilt u het versiebeheer op uw tijdelijke tabel tijdelijk of permanent stoppen. U kunt dit doen door de SYSTEM_VERSIONING
component in te stellen op OFF
.
SYSTEM_VERSIONING instellen op UIT
Stop systeemversiebeheer als u specifieke onderhoudsbewerkingen wilt uitvoeren op een tijdelijke tabel of geen geversiede tabel meer nodig hebt. Vanwege deze bewerking krijgt u twee onafhankelijke tabellen:
- Huidige tabel met een periodedefinitie
- Geschiedenistabel als een gewone tabel
Opmerkingen
De geschiedenistabel stopt met het vastleggen van de updates tijdens SYSTEM_VERSIONING = OFF
.
Er gebeurt geen gegevensverlies in de tijdelijke tabel wanneer u SYSTEM_VERSIONING = OFF
instelt of de SYSTEM_TIME
periode neer zet.
Wanneer u SYSTEM_VERSIONING = OFF
instelt en de SYSTEM_TIME
periode niet verwijdert, blijft het systeem de periodekolommen voor elke invoeg- en bijwerkbewerkingen bijwerken. Verwijderingen in de huidige tabel zijn permanent.
U moet de SYSTEM_TIME
periode verwijderen om de puntkolommen te verwijderen. Als u de puntkolommen wilt verwijderen, gebruikt u ALTER TABLE <table> DROP <column>;
. Voor meer informatie, zie Het schema van een systeemversie-gebaseerde tijdtabel wijzigen.
Wanneer u SYSTEM_VERSIONING = OFF
instelt, kunnen alle gebruikers met voldoende machtigingen het schema en de inhoud van de geschiedenistabel wijzigen of zelfs de geschiedenistabel permanent verwijderen.
U kunt SYSTEM_VERSIONING = OFF
niet instellen als u andere objecten hebt gemaakt met SCHEMABINDING
met behulp van tijdelijke queryextensies, zoals het verwijzen naar SYSTEM_TIME
. Deze beperking voorkomt dat deze objecten mislukken als u SYSTEM_VERSIONING = OFF
instelt.
Permanent SYSTEM_VERSIONING verwijderen
In dit voorbeeld worden SYSTEM_VERSIONING
permanent verwijderd en worden de periodekolommen gewist. Het verwijderen van de puntkolommen is optioneel.
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;
Tijdelijk SYSTEM_VERSIONING verwijderen
De volgende lijst bevat de lijst met bewerkingen waarvoor systeemversiebeheer moet worden ingesteld op OFF
:
- Overbodige gegevens verwijderen uit de geschiedenis (
DELETE
ofTRUNCATE
) - Gegevens verwijderen uit de huidige tabel zonder versiebeheer (
DELETE
,TRUNCATE
) - Partitie
SWITCH OUT
uit de huidige tabel - Partitie
SWITCH IN
in de geschiedenistabel
In dit voorbeeld wordt SYSTEM_VERSIONING
tijdelijk gestopt, zodat u specifieke onderhoudsbewerkingen kunt uitvoeren. Als u versiebeheer tijdelijk stopt als een vereiste voor tabelonderhoud, raden we u ten zeerste aan deze wijziging in een transactie uit te voeren om gegevensconsistentie te behouden.
Wanneer u systeemversiebeheer weer inschakelt, vergeet dan niet om het argument HISTORY_TABLE
op te geven. Als u dit niet doet, wordt er een nieuwe geschiedenistabel gemaakt en gekoppeld aan de huidige tabel. De oorspronkelijke geschiedenistabel kan nog steeds bestaan als een normale tabel, is niet meer gekoppeld aan de huidige tabel.
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;
Verwante inhoud
- tijdelijke tabellen
- Aan de slag met tijdelijke tabellen met systeemversies
- Het bewaren van historische gegevens in tijdelijke tabellen met systeemversies beheren
- Systeem-geversioneerde temporele tabellen met geheugen-geoptimaliseerde tabellen
- Een systeem-geversioneerde tijdstabel maken
- Gegevens wijzigen in een systeemversie-tijdstabel
- Query uitvoeren op gegevens in een systeem-geversioneerde temporale tabel
- het schema van een systeem-geversioneerde temporele tabel wijzigen