Migrera IDENTITY-kolumner till Fabric Data Warehouse

gäller för:✅ Warehouse i Microsoft Fabric

Den här artikeln beskriver hur man använder SET IDENTITY_INSERT och DBCC CHECKIDENT för att bevara befintliga identitetsvärden under migrering från SQL Server, Azure SQL Database eller Azure Synapse Analytics, och säkerställa referensintegritet.

Viktiga skillnader från andra plattformar

Innan du migrerar, förstå dessa skillnader i implementeringen IDENTITY i Fabric Data Warehouse:

  • IDENTITY Kolumner stöder endast bigint-datatypen .
  • Parametrarna SEED och INCREMENT stöds inte. Systemet hanterar värderingar internt.
  • Värden är garanterade unika men inte nödvändigtvis sekventiella. Luckor kan uppstå på grund av den distribuerade beräkningsarkitekturen.
  • Fabric Data Warehouse tillämpar inte viktiga begränsningar.

Migreringsstrategi

Genom att använda IDENTITY_INSERT support kan du migrera identitetsvärden direkt till Fabric Data Warehouse tabeller som använder IDENTITY kolumner:

  1. Skapa destinationstabeller i Fabric Data Warehouse med IDENTITY kolumner.
  2. Använd SET IDENTITY_INSERT ON för att infoga historisk data med de ursprungliga identitetsvärdena bevarade.
  3. Kör DBCC CHECKIDENT med RESEED för att justera identitetsintervallet efter migration.
  4. Uppdatera referenser till främmande nyckel om det behövs.

Denna metod bevarar de ursprungliga identitetsvärdena, bibehåller referensintegritet över tabeller och tillåter Fabric Data Warehouse att återuppta genereringen av unika värden efter migrering.

Exempel: Migrera tabeller med IDENTITY-kolumner

Följande exempel migrerar en Orders tabell från en källplattform till Fabric Data Warehouse samtidigt som identitetsvärden bevaras.

Steg 1: Skapa en destinationstabell med en IDENTITY-kolumn

Skapa destinationstabellen i Fabric Data Warehouse. Primärnyckelkolumnen använder IDENTITY:

CREATE TABLE dbo.Orders (
    OrderID BIGINT IDENTITY,
    OrderDate DATE,
    CustomerID BIGINT,
    TotalAmount DECIMAL(18, 2)
);

Steg 2: Migrera data med IDENTITY_INSERT

Använd SET IDENTITY_INSERT för att infoga historisk data med de ursprungliga identitetsvärdena. Denna metod bevarar befintliga ID:n så att relationer mellan tabeller förblir intakta.

-- 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;

För större datamängder kan du använda 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'
);

Steg 3: Omseeda identitetskolumner

När data har migrerats kör du DBCC CHECKIDENT med RESEED på varje tabell. Denna operation skannar alla använda identitetsintervall och justerar nästa värde för att undvika kollisioner med migrerad data:

DBCC CHECKIDENT('dbo.Orders', RESEED);

Steg 4: Verifiera migreringen och testa nya insättningar

Bekräfta att den migrerade datan är intakt och att nya inserts får automatiskt genererade värden som inte överlappar med migrerade värden:

-- 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;

Metodtips

  • Utför alltid reseed igen efter migrering. Kör DBCC CHECKIDENT('table_name', RESEED) efter varje tabellmigrering för att förhindra identitetsvärdekollisioner.
  • Använd COPY INTO för stora datamängder. För massmigrering av stora tabeller ger COPY INTO med IDENTITY_INSERT ON bättre prestanda än rad-för-rad-INSERT-satser.
  • Validera referensiell integritet. Efter migreringen, kontrollera att främmande nyckelvärden i barntabeller refererar till giltiga rader i föräldratabeller.