Anteckning
Å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 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
Det finns vissa överväganden och begränsningar att tänka på när du arbetar med transaktionsregistertabeller på grund av typen av systemversioner och oföränderliga data.
Allmänna överväganden och begränsningar
Tänk på följande när du arbetar med transaktionsregistret.
- En transaktionsregisterdatabas, en databas med transaktionsregisteregenskapen inställd på på, kan inte konverteras till en vanlig databas, med transaktionsregisteregenskapen inställd på av.
- Automatisk generering och lagring av databassammandrag är för närvarande tillgängligt i Azure SQL Database, men stöds inte på SQL Server.
- Automatiserad sammandragshantering med transaktionsregistertabeller med hjälp av oföränderliga Blobar i Azure Storage ger inte användarna möjlighet att använda lokalt redundanta lagringskonton (LRS).
- När en transaktionsregisterdatabas skapas blir alla nya tabeller som skapas som standard (utan att
APPEND_ONLY = ONange satsen) i databasen uppdaterade transaktionsregistertabeller. Om du vill skapa registertabeller med endast tillägg använder duAPPEND_ONLY = ON-klausulen i CREATE TABLE (Transact-SQL). - En transaktion kan uppdatera upp till 200 transaktionsregistertabeller.
Överväganden och begränsningar för transaktionsregistertabeller
- Befintliga tabeller i en databas som inte är transaktionsregistertabeller kan inte konverteras till transaktionsregistertabeller. Mer information finns i Migrera data från vanliga tabeller till transaktionsregistertabeller.
- När en transaktionsregistertabell har skapats kan den inte återställas till en tabell som inte är en transaktionsregistertabell.
- Det går inte att ta bort äldre data i registertabeller med endast tillägg eller historiktabellen för uppdaterbara transaktionsregistertabeller .
-
TRUNCATE TABLEstöds inte. - När en uppdaterad transaktionsregistertabell skapas lägger den till fyra GENERATED ALWAYS-kolumner i transaktionsregistret. En transaktionsregistertabell med endast tillägg lägger till två kolumner i transaktionsregistertabellen. Dessa nya kolumner räknas mot det maximala antalet kolumner som stöds i Azure SQL Database (1 024).
- Minnesinterna tabeller stöds inte.
- Glesa kolumnuppsättningar stöds inte.
- SWITCH IN/OUT-partition stöds inte.
- DBCC CLONEDATABASE stöds inte.
- Transaktionsregistertabeller kan inte ha fulltextindex.
- Transaktionsregistertabeller får inte vara graftabeller.
- Transaktionsregistertabeller får inte vara FileTables.
- Transaktionsregistertabeller kan inte ha ett icke-grupperat rowstore-index när de har ett grupperat kolumnlagringsindex.
- Ändringsspårning tillåts inte i historiktabellen, men tillåts i transaktionsregistertabeller.
- Ändringsdatainsamling tillåts inte i historiktabellen, men tillåts i transaktionsregistertabeller.
- Transaktionsreplikering stöds inte för transaktionsregistertabeller.
- Databasspegling stöds inte.
- Azure Synapse Link stöds men endast för transaktionsregistertabellen, inte historiktabellen.
- Ändra digest-sökvägen manuellt efter en inbyggd återställning av en databassäkerhetskopia till en Azure SQL Managed Instance.
- Ändra sammanställningssökvägen manuellt efter att en hanterad instanslänk har skapats till en Azure SQL Managed Instance.
- SQL Data Sync stöds inte med transaktionsregistertabeller.
Datatyper som inte stöds
- XML
- SqlVariant
- Användardefinierad datatyp
- FILESTREAM
- Vektor
Begränsningar i tidstabell
Uppdaterade transaktionsregistertabeller baseras på tekniken för tidstabeller och ärver de flesta begränsningarna , men inte alla. Nedan visas en lista över begränsningar som ärvs från temporala tabeller.
- Om namnet på en historiktabell anges när historiktabellen skapas måste du ange schema- och tabellnamnet och även namnet på transaktionsregistervyn.
- Som standard är historiktabellen PAGE komprimerad.
- Om den aktuella tabellen är partitionerad skapas historiktabellen i standardfilgruppen eftersom partitioneringskonfigurationen inte replikeras automatiskt från den aktuella tabellen till historiktabellen.
- Tabeller för tids- och historik kan inte vara en FILTABELL och kan innehålla kolumner av någon annan datatyp som stöds än FILESTREAM. FILETABLE och FILESTREAM tillåter datamanipulering utanför SQL Server, och därför kan systemversioner inte garanteras.
- En nod- eller kanttabell kan inte skapas som eller ändras till en temporal tabell. Graph stöds inte med transaktionsregister.
- Tidstabeller stöder blobdatatyper, till exempel
(n)varchar(max),varbinary(max)(n)text, ochimage, men de medför betydande lagringskostnader och får prestandakonsekvenser på grund av deras storlek. När du utformar systemet bör du därför vara försiktig när du använder dessa datatyper. - Historiktabellen måste skapas i samma databas som den aktuella tabellen. Temporal frågekörning över länkad server stöds inte.
- Historiktabellen kan inte ha begränsningar (primärnyckel, sekundärnyckel, tabell eller kolumnbegränsningar).
- Onlinealternativet (
WITH (ONLINE = ON) har ingen effekt påALTER TABLE ALTER COLUMNvid systemversionsbaserad temporaltabell.ALTER COLUMNutförs inte som online oavsett vilket värde som har angetts förONLINEalternativet. -
INSERTochUPDATE-instruktioner kan inte referera till kolumnerna GENERATED ALWAYS . Försök att infoga värden direkt i dessa kolumner blockeras. -
UPDATETEXTochWRITETEXTstöds inte. - Utlösare i historiktabellen tillåts inte.
- Användningen av replikeringstekniker är begränsad:
- AlwaysOn: Stöds fullt ut
- Ögonblicksbild, sammanslagning och transaktionsreplikering: Stöds inte för temporala tabeller
- Det går inte att konfigurera en historiktabell som aktuell tabell i en kedja med historiktabeller.
- Följande objekt eller egenskaper replikeras inte från den aktuella tabellen till historiktabellen när historiktabellen skapas:
- Perioddefinition
- Identitetsdefinition
- Indexen
- Statistik
- Kontrollera begränsningar
- Utlösare
- Partitioneringskonfiguration
- Behörigheter
- Säkerhetspredikat på radnivå
Överväganden för schemaändringar
Lägga till kolumner
Det finns stöd för att lägga till nullbara kolumner. Det går inte att lägga till icke-nullbara kolumner. Transaktionsregistret är utformat för att ignorera NULL-värden vid databehandling av hashen för en radversion. När en nullbar kolumn läggs till ändrar transaktionsregistret schemat för transaktionsregistret och historiktabellerna så att det inkluderar den nya kolumnen, men detta påverkar inte hashvärden för befintliga rader. Du kan lägga till kolumner i transaktionsregistertabeller i sys.ledger_column_history.
Ta bort kolumner och tabeller
Normalt raderar en kolumn eller tabell helt underliggande data från databasen och är i grunden inkompatibel med transaktionsregistrets funktioner som kräver att data är oföränderliga. I stället för att ta bort data byter transaktionsregistret bara namn på objekten som tas bort så att de tas bort logiskt från användarschemat, men fysiskt finns kvar i databasen. Eventuella borttagna kolumner är också dolda från tabellschemat för transaktionsregistret, så att de är osynliga för användarprogrammet. Data för sådana borttagna objekt är dock fortfarande tillgängliga för transaktionsregistrets verifieringsprocess och gör det möjligt för användare att inspektera historiska data via motsvarande transaktionsregistervyer. Du kan ta bort kolumner i transaktionsregistertabeller i sys.ledger_column_history. Att ta bort en transaktionsregistertabell registreras i sys.ledger_table_history. Radering av transaktionsregistertabeller och deras beroende objekt markeras som borttagna i systemkatalogvyerna och får nya namn.
- Borttagna transaktionsregistertabeller markeras som borttagna genom att ställa in
is_dropped_ledger_tablei sys.tables och byts namn med följande format:MSSQL_DroppedLedgerTable_<dropped_ledger_table_name>_<GUID>. - Borttagna historiktabeller för aktualiserbara kontotabeller byts namn enligt följande format:
MSSQL_DroppedLedgerHistory_<dropped_history_table_name>_<GUID>. - Borttagna huvudboksvyer markeras som borttagna genom att ställa in
is_dropped_ledger_viewi sys.views och byts namn med följande format:MSSQL_DroppedLedgerView_<dropped_ledger_view_name>_<GUID>.
Anmärkning
Namnet på borttagna transaktionsregistertabeller, historiktabeller och transaktionsregistervyer kan trunkeras om längden på den omdöpta tabellen eller vyn överskrider 128 tecken.
Ändra kolumner
Ändringar som inte påverkar underliggande data i en transaktionsregistertabell stöds utan någon särskild hantering eftersom de inte påverkar hashvärden som samlas in i transaktionsregistret. Dessa ändringar omfattar:
- Ändra nullability
- Sortering för Unicode-strängar
- Längden på kolumner med variabel längd
Alla åtgärder som kan påverka formatet på befintliga data, till exempel att ändra datatypen, stöds dock inte.