IDENTITY oszlopok migrálása a Fabric Data Warehouse-ba

A következőkre vonatkozik:✅ Raktár a Microsoft Fabricben

Ez a cikk bemutatja, hogyan használható a SET IDENTITY_INSERT és a DBCC CHECKIDENT a meglévő identity értékek megőrzésére az SQL Serverből, Azure SQL Database-ből vagy Azure Synapse Analyticsből történő migráció során, valamint a referenciális integritás biztosítására.

Főbb különbségek más platformokhoz képest

A migráció előtt ismerje meg ezeket a különbségeket a Fabric Data Warehouse IDENTITY-beli implementációjában:

  • IDENTITY Az oszlopok csak a bigint adattípust támogatják.
  • SEED És INCREMENT a paraméterek nem támogatottak. A rendszer belső értékeket kezel.
  • Az értékek garantáltan egyediek, de nem feltétlenül egymás után. Rések előfordulhatnak az elosztott számítási architektúra miatt.
  • A Fabric Data Warehouse nem kényszeríti ki a kulcskorlátozásokat.

Áttelepítési stratégia

A IDENTITY_INSERT támogatás használatával közvetlenül áttelepítheti az identitásértékeket a IDENTITY oszlopokat használó Fabric Data Warehouse-táblákba:

  1. Hozz létre céltáblákat Fabric Data Warehouse-ben oszlopokkalIDENTITY.
  2. A(z) SET IDENTITY_INSERT ON használatával szúrhat be korábbi adatokat úgy, hogy az eredeti identitásértékek megmaradnak.
  3. Futtasd a DBCC CHECKIDENT parancsot a RESEED kapcsolóval a migrálás után, hogy újraigazítsa az identitástartományt.
  4. Ha szükséges, frissítsd a külföldi kulcshivatkozásokat.

Ez a megközelítés megőrzi az eredeti identitásértékeket, megőrzi a referenciális integritást a táblák között, és lehetővé teszi Fabric Data Warehouse számára, hogy migráció után folytatják az egyedi értékek generálását.

Példa: IDENTITY oszlopokkal rendelkező táblák migrálása

A következő példa egy Orders tábla átvitelét egy forrásplatformról Fabric Data Warehouse-re áthelyezi, miközben megőrzi az identitásértékeket.

1. lépés: Létrehozz egy céltáblát IDENTITY oszloppal

Hozd létre a céltáblát Fabric Data Warehouse-ben. A fő kulcsoszlop a következőket használja IDENTITY:

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

2. lépés: Adatok migrálása az IDENTITY_INSERT használatával

Használd SET IDENTITY_INSERT a történelmi adatok eredeti identitásértékekkel való beillesztésére. Ez a módszer megőrzi a meglévő azonosítókat, így a táblák közötti kapcsolatok érintetlenek maradnak.

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

Nagyobb adathalmazok esetén használhatja a(z) COPY INTO elemet a(z) IDENTITY_INSERT elemmel:

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

3. lépés: Újravetessék az identitásoszlopokat

Az adatok migrálása után futtasd a DBCC CHECKIDENT parancsot a RESEED kapcsolóval minden táblán. Ez a művelet minden használt identitástartományt átvizsgál, és a következő értéket módosítja, hogy elkerülje az átvándorolt adatokkal való ütközéseket:

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

4. lépés: Ellenőrizd a migrációt és teszteld az új betéteket

Győződjön meg róla, hogy a migrált adatok érintetlenek, és hogy az új beillesztések automatikusan kapnak olyan értékeket, amelyek nem fedik át a migrált értékeket:

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

Bevált gyakorlatok

  • Mindig végezzen újrainicializálást a migráció után. Minden táblamigráció után futtasd DBCC CHECKIDENT('table_name', RESEED) el, hogy elkerüld az identitásértékek ütközését.
  • Használd a COPY INTO funkciót nagy adathalmazokhoz. Nagy táblák tömeges migrálásához a COPY INTO és a IDENTITY_INSERT ON jobb teljesítményt nyújt, mint a soronkénti INSERT utasítások.
  • Ellenőrizze a hivatkozási integritást. A migráció után ellenőrizzük, hogy a gyermektáblák külföldi kulcsértékei hivatkoznak az parent táblák érvényes soraira.