Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2016 (13.x) och senare versioner
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Du kanske vill stoppa versionshantering i den temporära tabellen, antingen tillfälligt eller permanent. Du kan göra det genom att ställa in villkoret SYSTEM_VERSIONING till OFF.
Ange SYSTEM_VERSIONING = AV
Sluta med systemversionering om du vill utföra specifika underhållsoperationer på en temporär tabell eller inte längre behöver en versionerad tabell. Denna operation ger dig två oberoende tabeller:
- Aktuell tabell med en perioddefinition
- Historiktabell som en vanlig tabell
Remarks
Historiktabellen slutar samla in uppdateringarna under SYSTEM_VERSIONING = OFF.
Ingen dataförlust sker i den tidsmässiga tabellen när du anger SYSTEM_VERSIONING = OFF eller släpper SYSTEM_TIME period.
När du sätter SYSTEM_VERSIONING = OFF och inte tar bort SYSTEM_TIME perioden fortsätter systemet att uppdatera periodkolumnerna för varje insättning och uppdatering. Borttagningar i den aktuella tabellen är permanenta.
Du måste ta bort den SYSTEM_TIME perioden för att ta bort periodkolumnerna. Om du vill ta bort periodkolumnerna använder du ALTER TABLE <table> DROP <column>;. Mer information finns i Ändra schemat för en systemversionsbaserad temporal tabell.
När du anger SYSTEM_VERSIONING = OFFkan alla användare med tillräcklig behörighet ändra schemat och innehållet i historiktabellen, eller till och med permanent ta bort historiktabellen.
Du kan inte sätta SYSTEM_VERSIONING = OFF om du har andra objekt skapade med SCHEMABINDING som använder temporala frågeextensioner, såsom referens SYSTEM_TIME. Den här begränsningen förhindrar att dessa objekt misslyckas om du anger SYSTEM_VERSIONING = OFF.
Ta bort SYSTEM_VERSIONING permanent
Det här exemplet tar bort SYSTEM_VERSIONING permanent och tar bort periodkolumnerna. Det är valfritt att ta bort periodkolumnerna.
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = OFF);
Du kan också ta bort perioden om du vill att den temporala tabellen ska återgå till att vara en icke-temporal tabell.
ALTER TABLE dbo.Department
DROP PERIOD FOR SYSTEM_TIME;
Ta tillfälligt bort SYSTEM_VERSIONING
Följande operationer kräver att du sätter systemversionering till OFF:
- Ta bort onödiga data från historiken (
DELETEellerTRUNCATE) - Ta bort data från den aktuella tabellen utan versionshantering (
DELETE,TRUNCATE) - Partition
SWITCH OUTfrån den aktuella tabellen - Partitionera
SWITCH INi historiktabellen
Det här exemplet stoppar tillfälligt SYSTEM_VERSIONING så att du kan utföra specifika underhållsåtgärder. Om du stoppar versionshantering tillfälligt som en förutsättning för tabellunderhåll rekommenderar vi starkt att du gör den här ändringen i en transaktion för att behålla datakonsekvensen.
När du aktiverar systemversionering igen, ange argumentet HISTORY_TABLE . Om du inte gör det skapar systemet en ny historiktabell och kopplar den till den nuvarande tabellen. Den ursprungliga historiktabellen kan fortfarande existera som en vanlig tabell, men den är inte längre kopplad till den nuvarande tabellen.
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;
Relaterat innehåll
- Temporala tabeller
- Kom igång med systemversionsbaserade tidstabeller
- Hantera kvarhållning av historiska data i systemversionsbaserade tidstabeller
- systemversionsbaserade tidstabeller med minnesoptimerade tabeller
- Skapa en systemversionsbaserad temporal tabell
- Ändra data i en systemversionsbaserad temporal tabell
- Fråga efter data i en systemversionsbaserad temporal tabell
- Ändra schemat för en systemversionsbaserad tidstabell