Eseguire la migrazione delle colonne IDENTITY a Fabric Data Warehouse

si applica a:✅ Magazzino di dati in Microsoft Fabric

Questo articolo descrive come utilizzare SET IDENTITY_INSERT e DBCC CHECKIDENT per preservare i valori di identità esistenti durante la migrazione da SQL Server, database SQL di Azure o Azure Synapse Analytics, e garantire l'integrità referenziale.

Differenze chiave rispetto ad altre piattaforme

Prima di migrare, comprendi queste differenze nell'implementazione IDENTITY in Fabric Data Warehouse:

  • IDENTITY Le colonne supportano solo il tipo di dato BIGINT .
  • SEED e INCREMENT i parametri non sono supportati. Il sistema gestisce i valori internamente.
  • I valori sono garantiti unici ma non necessariamente sequenziali. Possono verificarsi lacune a causa dell'architettura di calcolo distribuita.
  • Fabric Data Warehouse non applica vincoli di chiave.

Strategia di migrazione

Usando il supporto IDENTITY_INSERT, puoi migrare direttamente i valori di identità nelle tabelle di Fabric Data Warehouse che usano colonne IDENTITY:

  1. Crea tabelle di destinazione in Fabric Data Warehouse con IDENTITY colonne.
  2. Usare SET IDENTITY_INSERT ON per inserire dati storici mantenendo i valori ID originali.
  3. Esegui DBCC CHECKIDENT con RESEED per riallineare l'intervallo di identità dopo la migrazione.
  4. Aggiorna le riferimenti della chiave esterna se necessario.

Questo approccio preserva i valori identità originali, mantiene l'integrità referenziale tra le tabelle e permette Fabric Data Warehouse riprendere la generazione di valori unici dopo la migrazione.

Esempio: Migrare tabelle con colonne IDENTITY

Il seguente esempio migra una Orders tabella da una piattaforma sorgente a Fabric Data Warehouse preservando i valori di identità.

Passo 1: Crea una tabella di destinazione con una colonna IDENTITY

Crea la tabella delle destinazioni in Fabric Data Warehouse. La colonna chiave primaria utilizza IDENTITY:

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

Passo 2: Migra i dati con IDENTITY_INSERT

Usare SET IDENTITY_INSERT per inserire dati storici con i valori di identità originali. Questo metodo preserva gli ID esistenti in modo che le relazioni tra le tabelle rimangano intatte.

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

Per dataset più grandi, puoi usare COPY INTO con 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'
);

Passo 3: Risemina le colonne di identità

Dopo aver migrato i dati, esegui DBCC CHECKIDENT con RESEED su ogni tabella. Questa operazione scansiona tutti gli intervalli di identità utilizzati e aggiusta il valore successivo per evitare collisioni con i dati migrati:

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

Passo 4: Verifica la migrazione e testa nuovi inserti

Conferma che i dati migrati siano intatti e che i nuovi inserti ricevano valori generati automaticamente che non si sovrappongono a quelli migrati:

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

Procedure consigliate

  • Riesegui sempre il seeding dopo la migrazione. Esegui DBCC CHECKIDENT('table_name', RESEED) dopo ogni migrazione di tabelle per prevenire collisioni di valori identi.
  • Usa COPY INTO per grandi dataset. Per la migrazione in massa di tabelle di grandi dimensioni, l'uso di COPY INTO con IDENTITY_INSERT ON offre prestazioni migliori rispetto alle istruzioni INSERT eseguite riga per riga.
  • Valida l'integrità referenziale. Dopo la migrazione, verifica che i valori delle chiavi esterne nelle tabelle figlie facciano riferimento alle righe valide nelle tabelle genitori.