Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Gælder for:✅ Warehouse i Microsoft Fabric
Denne artikel beskriver, hvordan man bruger SET IDENTITY_INSERT og DBCC CHECKIDENT til at bevare eksisterende identitetsværdier under migrering fra SQL Server, Azure SQL Database eller Azure Synapse Analytics og sikre referentiel integritet.
Væsentlige forskelle fra andre platforme
Før du migrerer, skal du forstå disse forskelle i implementeringen IDENTITY i Fabric data warehouse:
-
IDENTITYKolonner understøtter kun bigint-datatypen . -
SEEDINCREMENTog parametre understøttes ikke. Systemet styrer værdier internt. - Værdier er garanteret unikke, men ikke nødvendigvis sekventielle. Der kan opstå huller på grund af den distribuerede beregningsarkitektur.
- Fabric data warehouse håndhæver ikke nøglebegrænsninger.
Migrationsstrategi
Ved at bruge IDENTITY_INSERT support kan du migrere identitetsværdier direkte til Fabric data warehouse tabeller, der bruger IDENTITY kolonner:
- Opret destinationstabeller i Fabric data warehouse med
IDENTITYkolonner. - Brug
SET IDENTITY_INSERT ONtil at indsætte historiske data med de oprindelige identitetsværdier bevaret. - Kør
DBCC CHECKIDENTmedRESEEDfor at justere identitetsintervallet efter migration. - Opdater fremmednøglereferencer om nødvendigt.
Denne tilgang bevarer de oprindelige identitetsværdier, opretholder referentiel integritet på tværs af tabeller og tillader Fabric data warehouse at genoptage genereringen af unikke værdier efter migration.
Eksempel: Migrer tabeller med IDENTITY-kolonner
Følgende eksempel migrerer en Orders tabel fra en kildeplatform til Fabric data warehouse samtidig med at identitetsværdier bevares.
Trin 1: Opret en destinationstabel med en IDENTITY-kolonne
Opret destinationstabellen i Fabric data warehouse. Primærnøglekolonnen bruger IDENTITY:
CREATE TABLE dbo.Orders (
OrderID BIGINT IDENTITY,
OrderDate DATE,
CustomerID BIGINT,
TotalAmount DECIMAL(18, 2)
);
Trin 2: Migrer data med IDENTITY_INSERT
Brug SET IDENTITY_INSERT til at indsætte historiske data med de oprindelige identitetsværdier. Denne metode bevarer eksisterende ID'er, så relationerne mellem tabellerne forbliver 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 datasæt kan du bruge 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'
);
Trin 3: Genseedede identitetskolonner
Efter at have migreret data, kør DBCC CHECKIDENT med på RESEED hver tabel. Denne operation scanner alle brugte identitetsintervaller og justerer den næste værdi for at undgå kollisioner med migrerede data:
DBCC CHECKIDENT('dbo.Orders', RESEED);
Trin 4: Verificér migrationen og test nye inserts
Bekræft, at de migrerede data er intakte, og at nye inserts modtager automatisk genererede værdier, der ikke overlapper med de migrerede værdier:
-- 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;
Bedste praksis
- Altid sås efter migration. Kør
DBCC CHECKIDENT('table_name', RESEED)efter hver tabelmigrering for at forhindre identitetsværdikollisioner. - Brug COPY INTO til store datasæt. For massemigrering af store tabeller
COPY INTOgiver detIDENTITY_INSERT ONbedre ydeevne end række-for-række-udsagnINSERT. - Valider referentiel integritet. Efter migreringen, verificér at fremmede nøgleværdier i børnetabeller refererer til gyldige rækker i forældretabeller.