Delen via


Overwegingen en beperkingen voor grootboek

van toepassing op: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance

Er zijn enkele overwegingen en beperkingen waarmee u rekening moet houden bij het werken met grootboektabellen vanwege de aard van systeemversiebeheer en onveranderbare gegevens.

Algemene overwegingen en beperkingen

Houd rekening met het volgende bij het werken met grootboek.

Overwegingen en beperkingen voor grootboektabellen

  • Bestaande tabellen in een database die geen grootboektabellen zijn, kunnen niet worden geconverteerd naar grootboektabellen. Zie Gegevens migreren van normale tabellen naar grootboektabellen voor meer informatie.
  • Nadat een grootboektabel is gemaakt, kan deze niet worden teruggezet naar een tabel die geen grootboektabel is.
  • Het verwijderen van oudere gegevens in grootboektabellen met alleen toevoeggegevens of de geschiedenistabel van updatable grootboektabellen wordt niet ondersteund.
  • TRUNCATE TABLE wordt niet ondersteund.
  • Wanneer een bijwerkbare grootboektabel wordt aangemaakt, voegt het vier ALTIJD GEGENEREERDE kolommen toe aan de grootboektabel. Een grootboektabel met alleen toevoeggegevens voegt twee kolommen toe aan de grootboektabel. Deze nieuwe kolommen tellen mee voor het maximaal ondersteunde aantal kolommen in Azure SQL Database (1024).
  • In-memory tabellen worden niet ondersteund.
  • Sparse kolomverzamelingen worden niet ondersteund.
  • SWITCH IN/OUT-partitie wordt niet ondersteund.
  • DBCC CLONEDATABASE wordt niet ondersteund.
  • Grootboektabellen kunnen geen indexen met volledige tekst bevatten.
  • Grootboektabellen kunnen geen grafiektabel zijn.
  • Grootboektabellen kunnen geen FileTables zijn.
  • Grootboektabellen kunnen geen niet-geclusterde rijstore-index hebben wanneer ze een geclusterde columnstore-index hebben.
  • Wijzigingen bijhouden is niet toegestaan in de geschiedenistabel, maar is toegestaan voor grootboektabellen.
  • Wijzigingsgegevens vastleggen is niet toegestaan in de geschiedenistabel, maar is toegestaan voor grootboektabellen.
  • Transactionele replicatie wordt niet ondersteund voor grootboektabellen.
  • Databasespiegeling wordt niet ondersteund.
  • Azure Synapse Link wordt ondersteund, maar alleen voor de grootboektabel, niet voor de geschiedenistabel.
  • Wijzig handmatig het pad voor bestandsoverzicht na een systeemeigen herstel van een databaseback-up in een Azure SQL Managed Instance.
  • Wijzig het digest-pad handmatig nadat een koppeling naar een beheerd exemplaar van Azure SQL is gemaakt.
  • SQL Data Sync wordt niet ondersteund met grootboektabellen.

Niet-ondersteunde gegevenstypen

  • XML
  • SqlVariant
  • Door de gebruiker gedefinieerd gegevenstype
  • FILESTREAM
  • Vector

Tijdelijke tabelbeperkingen

Bijwerkbare grootboektabellen zijn gebaseerd op de technologie van temporale tabellen en nemen de meeste beperkingen over, maar niet allemaal. Hieronder ziet u een lijst met beperkingen die worden overgenomen van tijdelijke tabellen.

  • Als de naam van een geschiedenistabel wordt opgegeven tijdens het maken van de geschiedenistabel, moet u de schema- en tabelnaam en ook de naam van de grootboekweergave opgeven.
  • De geschiedenistabel is standaard gecomprimeerd op PAGE.
  • Als de huidige tabel is gepartitioneerd, wordt de geschiedenistabel gemaakt in de standaardbestandsgroep, omdat de partitioneringsconfiguratie niet automatisch wordt gerepliceerd van de huidige tabel naar de geschiedenistabel.
  • Tijdelijke tabellen en geschiedenistabellen kunnen geen FILETABLE zijn en kunnen kolommen bevatten van een ander ondersteund gegevenstype dan FILESTREAM. FILETABLE en FILESTREAM maken het bewerken van gegevens buiten SQL Server mogelijk, waardoor systeemversiebeheer niet kan worden gegarandeerd.
  • Een knooppunt- of edge-tabel kan niet worden aangemaakt als, of omgezet in, een temporale tabel. Graph wordt niet ondersteund door boekhouding.
  • Hoewel tijdelijke tabellen blobgegevenstypen ondersteunen, zoals (n)varchar(max), varbinary(max)en (n)text, worden imageaanzienlijke opslagkosten in rekening gebracht en hebben ze gevolgen voor de prestaties vanwege hun grootte. Als zodanig moet u bij het ontwerpen van uw systeem voorzichtig zijn bij het gebruik van deze gegevenstypen.
  • De geschiedenistabel moet worden gemaakt in dezelfde database als de huidige tabel. Tijdelijke query's via gekoppelde server worden niet ondersteund.
  • De geschiedenistabel kan geen beperkingen hebben (primaire sleutel, refererende sleutel, tabel of kolombeperkingen).
  • Onlineoptie (WITH (ONLINE = ON) heeft geen effect in ALTER TABLE ALTER COLUMN het geval van tijdelijke tabel met systeemversies. ALTER COLUMN wordt niet online uitgevoerd, ongeacht welke waarde is opgegeven voor de ONLINE optie.
  • INSERT en UPDATE instructies kunnen niet verwijzen naar GENERATED ALWAYS-kolommen. Pogingen om waarden rechtstreeks in deze kolommen in te voegen, worden geblokkeerd.
  • UPDATETEXT en WRITETEXT worden niet ondersteund.
  • Triggers in de geschiedenistabel zijn niet toegestaan.
  • Het gebruik van replicatietechnologieën is beperkt:
    • AlwaysOn: volledig ondersteund
    • Momentopname, samenvoeging en transactionele replicatie: niet ondersteund voor tijdelijke tabellen
  • Een geschiedenistabel kan niet worden geconfigureerd als huidige tabel in een keten van geschiedenistabellen.
  • De volgende objecten of eigenschappen worden niet gerepliceerd van de huidige tabel naar de geschiedenistabel wanneer de geschiedenistabel wordt gemaakt:
    • Periodedefinitie
    • Identiteitsdefinitie
    • Indexen
    • Statistiek
    • Controleer beperkingen
    • Aanleidingen
    • Partitioneringsconfiguratie
    • Machtigingen
    • Beveiligingspredicaten op rijniveau

Overwegingen voor schemawijzigingen

Kolommen toevoegen

Het toevoegen van nullable kolommen wordt ondersteund. Het toevoegen van niet-nullbare kolommen wordt niet ondersteund. Grootboek is ontworpen om NULL-waarden te negeren bij het berekenen van de hash van een rijversie. Op basis hiervan zal het grootboek het schema van het grootboek en de geschiedenistabellen wijzigen om de nieuwe kolom op te nemen. Dit heeft echter geen invloed op de hashes van bestaande rijen. Het toevoegen van kolommen in grootboektabellen wordt vastgelegd in sys.ledger_column_history.

Kolommen en tabellen uit de database verwijderen

Normaal gesproken worden de onderliggende gegevens uit de database volledig gewist door een kolom of tabel te verwijderen en is dit fundamenteel niet compatibel met de grootboekfunctionaliteit waarvoor gegevens onveranderbaar moeten zijn. In plaats van de gegevens te verwijderen, wijzigt grootboek de naam van de objecten die worden verwijderd, zodat ze logisch worden verwijderd uit het gebruikersschema, maar fysiek in de database blijven. Verwijderde kolommen worden ook verborgen in het grootboektabelschema, zodat ze onzichtbaar zijn voor de gebruikerstoepassing. De gegevens van dergelijke verwijderde objecten blijven echter beschikbaar voor het grootboekverificatieproces en stellen gebruikers in staat om historische gegevens te inspecteren via de bijbehorende grootboekweergaven. Het verwijderen van kolommen in grootboektabellen wordt vastgelegd in sys.ledger_column_history. Het verwijderen van een grootboektabel wordt vastgelegd in sys.ledger_table_history. Het verwijderen van grootboektabellen en hun bijbehorende afhankelijke objecten wordt gemarkeerd als verwijderd in systeemcatalogusweergaven en ze worden hernoemd.

  • Verwijderde grootboektabellen worden gemarkeerd als verwijderd door instelling is_dropped_ledger_table in sys.tables en hernoemd met de volgende indeling: MSSQL_DroppedLedgerTable_<dropped_ledger_table_name>_<GUID>
  • Geschiedenistabellen die zijn verwijderd voor bijwerkbare grootboektabellen worden hernoemd met de volgende indeling: MSSQL_DroppedLedgerHistory_<dropped_history_table_name>_<GUID>.
  • Verwijderde grootboekweergaven worden gemarkeerd als verwijderd door de instelling is_dropped_ledger_view in sys.views en hernoemd met de volgende indeling: MSSQL_DroppedLedgerView_<dropped_ledger_view_name>_<GUID>

Opmerking

De naam van verwijderde grootboektabellen, geschiedenistabellen en grootboekweergaven kan worden afgekapt als de lengte van de hernoemde tabel of weergave langer is dan 128 tekens.

Kolommen wijzigen

Wijzigingen die geen invloed hebben op de onderliggende gegevens van een grootboektabel, worden ondersteund zonder speciale verwerking, omdat deze geen invloed hebben op de hashes die in het grootboek worden vastgelegd. Deze wijzigingen zijn onder andere:

  • Nullbaarheid wijzigen
  • Sortering voor Unicode-tekenreeksen
  • De lengte van kolommen met variabele lengte

Bewerkingen die van invloed kunnen zijn op de indeling van bestaande gegevens, zoals het wijzigen van het gegevenstype, worden echter niet ondersteund.