Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Gjelder for:✅ Lager i Microsoft Fabric
Denne artikkelen beskriver hvordan man kan bruke SET IDENTITY_INSERT og DBCC CHECKIDENT for å bevare eksisterende identitetsverdier under migrering fra SQL Server, Azure SQL Database eller Azure Synapse Analytics, og sikre referanseintegritet.
Viktige forskjeller fra andre plattformer
Før du migrerer, forstå disse forskjellene i implementeringen IDENTITY i Fabric datalager:
-
IDENTITYKolonner støtter kun bigint-datatypen . -
SEEDINCREMENTog parametere støttes ikke. Systemet håndterer verdier internt. - Verdier er garantert unike, men ikke nødvendigvis sekvensielle. Hull kan oppstå på grunn av den distribuerte beregningsarkitekturen.
- Fabric datalager håndhever ikke viktige begrensninger.
Migrasjonsstrategi
Ved å bruke IDENTITY_INSERT support kan du migrere identitetsverdier direkte til Fabric datalager tabeller som bruker IDENTITY kolonner:
- Lag destinasjonstabeller i Fabric datalager med
IDENTITYkolonner. - Bruk
SET IDENTITY_INSERT ONden til å sette inn historiske data med de opprinnelige identitetsverdiene bevart. - Kjør
DBCC CHECKIDENTmedRESEEDfor å justere identitetsområdet etter migrering. - Oppdater fremmednøkkelreferanser om nødvendig.
Denne tilnærmingen bevarer de opprinnelige identitetsverdiene, opprettholder referanseintegritet på tvers av tabeller, og lar Fabric datalager fortsette å generere unike verdier etter migrering.
Eksempel: Migrer tabeller med IDENTITY-kolonner
Følgende eksempel migrerer en Orders tabell fra en kildeplattform til Fabric datalager samtidig som identitetsverdier bevares.
Trinn 1: Lag en destinasjonstabell med en IDENTITY-kolonne
Lag destinasjonstabellen i Fabric datalager. Primærnøkkelkolonnen bruker:IDENTITY
CREATE TABLE dbo.Orders (
OrderID BIGINT IDENTITY,
OrderDate DATE,
CustomerID BIGINT,
TotalAmount DECIMAL(18, 2)
);
Trinn 2: Migrer data med IDENTITY_INSERT
Bruk SET IDENTITY_INSERT den til å sette inn historiske data med de opprinnelige identitetsverdiene. Denne metoden bevarer eksisterende ID-er slik at relasjonene mellom tabellene forblir intakte.
-- 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;
For større datasett kan du bruke COPY INTO med IDENTITY_INSERT:
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'
);
Trinn 3: Såd identitetskolonner på nytt
Etter å ha migrert data, kjør DBCC CHECKIDENT med RESEED på hver tabell. Denne operasjonen skanner alle brukte identitetsområder og justerer neste verdi for å unngå kollisjoner med migrerte data:
DBCC CHECKIDENT('dbo.Orders', RESEED);
Trinn 4: Verifiser migreringen og test nye innsettinger
Bekreft at de migrerte dataene er intakte og at nye innsettinger mottar automatisk genererte verdier som ikke overlapper med migrerte verdier:
-- 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 fremgangsmåter
- Alltid så etter migrasjon. Kjør
DBCC CHECKIDENT('table_name', RESEED)etter hver tabellmigrering for å forhindre identitetsverdikollisjoner. - Bruk COPY INTO for store datasett. For massemigrering av store tabeller
COPY INTOgir bedreIDENTITY_INSERT ONytelse enn rad-for-rad-setningerINSERT. - Valider referanseintegritet. Etter migrering, verifiser at fremmede nøkkelverdier i barnetabeller refererer til gyldige rader i foreldretabeller.