Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:✅ Warehouse in Microsoft Fabric
Dit artikel beschrijft hoe je SET IDENTITY_INSERT en DBCC CHECKIDENT kunt gebruiken om bestaande identiteitswaarden te behouden tijdens migratie van SQL Server, Azure SQL Database of Azure Synapse Analytics, en referentieintegriteit te waarborgen.
Belangrijke verschillen met andere platforms
Voordat je migreert, moet je deze verschillen in de implementatie in Fabric Data Warehouse IDENTITY begrijpen:
-
IDENTITYkolommen ondersteunen alleen het bigint-datatype . -
SEEDenINCREMENTparameters worden niet ondersteund. Het systeem beheert waarden intern. - Waarden zijn gegarandeerd uniek, maar niet per se opeenvolgend. Er kunnen hiaten ontstaan door de gedistribueerde rekenarchitectuur.
- Fabric Data Warehouse dwingt geen belangrijke beperkingen af.
Migratiestrategie
Door ondersteuning te gebruikenIDENTITY_INSERT, kunt u identiteitswaarden direct migreren naar Fabric Data Warehouse tabellen die kolommen gebruikenIDENTITY:
- Maak bestemmingstabellen aan in Fabric Data Warehouse met
IDENTITYkolommen. - Gebruik
SET IDENTITY_INSERT ONom historische gegevens in te voegen met behoud van de oorspronkelijke identiteitswaarden. - Voer
DBCC CHECKIDENTuit metRESEEDom het identiteitsbereik na de migratie opnieuw uit te lijnen. - Werk de referenties van vreemde sleutels bij indien nodig.
Deze aanpak behoudt de oorspronkelijke identiteitswaarden, behoudt referentieintegriteit over tabellen en stelt Fabric Data Warehouse in staat om na migratie weer unieke waarden te genereren.
Voorbeeld: tabellen met IDENTITY-kolommen migreren
Het volgende voorbeeld migreert een Orders tabel van een bronplatform naar Fabric Data Warehouse terwijl identiteitswaarden behouden blijven.
Stap 1: Maak een bestemmingstabel aan met een IDENTITY-kolom
Maak de bestemmingstabel aan in Fabric Data Warehouse. De primaire sleutelkolom gebruikt IDENTITY:
CREATE TABLE dbo.Orders (
OrderID BIGINT IDENTITY,
OrderDate DATE,
CustomerID BIGINT,
TotalAmount DECIMAL(18, 2)
);
Stap 2: Migratie van data met IDENTITY_INSERT
Gebruik SET IDENTITY_INSERT om historische gegevens in te voegen met de oorspronkelijke identiteitswaarden. Deze methode behoudt bestaande ID's zodat relaties tussen tabellen intact blijven.
-- Migrate Orders with original IDs
SET IDENTITY_INSERT dbo.Orders ON;
INSERT INTO dbo.Orders (OrderID, OrderDate, CustomerID, TotalAmount)
VALUES (101, '2025-01-15', 1, 5000.00),
(102, '2025-02-20', 2, 3200.00),
(103, '2025-03-10', 1, 7800.00),
(104, '2025-04-05', 3, 1500.00);
SET IDENTITY_INSERT dbo.Orders OFF;
Voor grotere datasets kunt u het volgende IDENTITY_INSERTgebruikenCOPY INTO:
COPY INTO dbo.Orders (OrderID 1, OrderDate 2, CustomerID 3, TotalAmount 4)
FROM 'https://storage.blob.core.windows.net/migration/orders.csv'
WITH (
FILE_TYPE = 'CSV',
IDENTITY_INSERT = 'ON'
);
Stap 3: Herbezaad identiteitskolommen
Na het migreren van gegevens voert u DBCC CHECKIDENT met RESEED uit op elke tabel. Deze operatie scant alle gebruikte identiteitsbereiken en past de volgende waarde aan om botsingen met gemigreerde data te voorkomen:
DBCC CHECKIDENT('dbo.Orders', RESEED);
Stap 4: Controleer de migratie en test nieuwe inserts
Bevestig dat de gemigratiede data intact is en dat nieuwe inserts automatisch gegenereerde waarden ontvangen die niet overlappen met gemigreerde waarden:
-- Verify migrated data
SELECT * FROM dbo.Orders ORDER BY OrderID;
-- Insert a row that receives an automatically generated ID
INSERT INTO dbo.Orders (OrderDate, CustomerID, TotalAmount)
VALUES ('2025-05-01', 1, 2500.00);
-- Verify that new IDs don't overlap with migrated data
SELECT * FROM dbo.Orders ORDER BY OrderID;
Beste praktijken
- Altijd na de migratie zaaien. Voer
DBCC CHECKIDENT('table_name', RESEED)na elke tabelmigratie uit om botsingen met identiteitswaarden te voorkomen. - Gebruik COPY INTO voor grote datasets. Voor de migratie in bulk van grote tabellen bieden
COPY INTOmetIDENTITY_INSERT ONbetere prestaties dan rij-voor-rij-INSERT-instructies. - Valideer referentieintegriteit. Controleer na migratie dat vreemde sleutelwaarden in kindtabellen verwijzen naar geldige rijen in oudertabellen.