Siirrä IDENTITY-sarakkeet Fabric tietovarasto

Koskee:✅ Microsoft Fabric -varasto

Tässä artikkelissa kuvataan, miten SET IDENTITY_INSERT ja DBCC CHECKIDENT voidaan käyttää olemassa olevien identiteettiarvojen säilyttämiseen siirron aikana SQL Server, Azure SQL Database tai Azure Synapse Analytics ja varmistamaan referenttitietoisuus.

Keskeiset erot muihin alustoihin verrattuna

Ennen siirtymistä ymmärrä nämä erot toteutuksessa IDENTITY Fabric tietovarasto:

  • IDENTITY sarakkeet tukevat vain bigint-tietotyyppiä .
  • SEED Ja INCREMENT parametreja ei tueta. Järjestelmä hallinnoi arvoja sisäisesti.
  • Arvot ovat taatusti ainutlaatuisia, mutta eivät välttämättä peräkkäin. Aukkoja voi syntyä hajautetun laskentaarkkitehtuurin vuoksi.
  • Fabric tietovarasto ei valvo keskeisiä rajoituksia.

Muuttostrategia

Supportin IDENTITY_INSERT avulla voit siirtää identiteettiarvot suoraan Fabric tietovarasto tauluihin, jotka käyttävät IDENTITY sarakkeita:

  1. Luo kohdetaulut Fabric tietovarasto sarakkeillaIDENTITY.
  2. Käytä SET IDENTITY_INSERT ON historiallisten tietojen lisäämiseen, joissa alkuperäiset identiteettiarvot säilyvät.
  3. Käytä DBCC CHECKIDENT tunnistealuetta RESEED uudelleenkohdistamiseen siirron jälkeen.
  4. Päivitä tarvittaessa vierasavainviitteitä.

Tämä lähestymistapa säilyttää alkuperäiset identiteettiarvot, säilyttää viiteellisen eheyden taulujen välillä ja mahdollistaa Fabric tietovarasto yksilöllisten arvojen generoinnin siirron jälkeen.

Esimerkki: Siirtäkää tauluja, joissa on IDENTITY-sarakkeet

Seuraava esimerkki siirtää taulun Orders lähdealustalta Fabric tietovarasto säilyttäen identiteetin arvot.

Vaihe 1: Luo kohdetaulu IDENTITY-sarakkeella

Luo kohdetaulu Fabric tietovarasto. Pääavain sarake käyttää IDENTITY:

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

Vaihe 2: Siirrä data IDENTITY_INSERT

Käytä SET IDENTITY_INSERT historiallisten tietojen lisäämiseen alkuperäisillä identiteettiarvoilla. Tämä menetelmä säilyttää olemassa olevat ID:t, jotta taulujen väliset suhteet pysyvät ennallaan.

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

Suuremmille aineistoille voit käyttää COPY INTO seuraavilla IDENTITY_INSERTversioilla:

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

Vaihe 3: Uudelleensiemennä identiteettisarakkeet

Datan siirron jälkeen suorita DBCC CHECKIDENT jokaisessa taulukossa RESEED . Tämä operaatio skannaa kaikki käytetyt identiteettialueet ja säätää seuraavaa arvoa välttääkseen törmäykset siirrettyihin tietoihin:

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

Vaihe 4: Varmista siirto ja testaa uudet insertit

Varmista, että siirretty data on ehjä ja että uudet insertit saavat automaattisesti generoituja arvoja, jotka eivät mene päällekkäin siirrettyjen arvojen kanssa:

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

Parhaat käytännöt

  • Aina uudelleenkylväminen muuton jälkeen. Suorita DBCC CHECKIDENT('table_name', RESEED) jokaisen taulun siirron jälkeen estääksesi identiteettiarvojen törmäykset.
  • Käytä COPY INTO -toimintoa suurille aineistoille. Suurten taulujen massasiirrossa COPY INTO with IDENTITY_INSERT ON tarjoaa paremman suorituskyvyn kuin rivikohtaiset INSERT lauseet.
  • Validoi referenttiaalinen eheys. Siirron jälkeen varmista, että vieraiden avainten arvot lapsitauluissa viittaavat vanhempien taulujen kelvollisiin riveihin.