Migriere IDENTITY-Spalten zu Fabric Data Warehouse

Gilt für:✅ Warehouse in Microsoft Fabric

Dieser Artikel beschreibt, wie SET IDENTITY_INSERT und DBCC CHECKIDENT verwendet werden können, um bestehende Identitätswerte während der Migration von SQL Server, Azure SQL-Datenbank oder Azure Synapse Analytics zu erhalten und die referenzielle Integrität sicherzustellen.

Wesentliche Unterschiede zu anderen Plattformen

Vor der Migration sollten Sie diese Unterschiede in der IDENTITY Implementierung in Fabric Data Warehouse verstehen:

  • IDENTITY Spalten unterstützen nur den Bigint-Datentyp .
  • SEED Und INCREMENT Parameter werden nicht unterstützt. Das System verwaltet Werte intern.
  • Werte sind garantiert einzigartig, aber nicht unbedingt sequenziell. Aufgrund der verteilten Rechenarchitektur können Lücken entstehen.
  • Fabric Data Warehouse erzwingt keine Schlüsseleinschränkungen.

Migrationsstrategie

Mit der Unterstützung von IDENTITY_INSERT können Sie Identitätswerte direkt in Fabric-Data-Warehouse-Tabellen migrieren, die IDENTITY-Spalten verwenden:

  1. Erstelle Zieltabellen in Fabric Data Warehouse mit IDENTITY Spalten.
  2. Verwenden Sie SET IDENTITY_INSERT ON es, um historische Daten einzufügen, wobei die ursprünglichen Identitätswerte erhalten bleiben.
  3. Führen Sie DBCC CHECKIDENT mit RESEED aus, um den IDENTITY-Bereich nach der Migration neu auszurichten.
  4. Aktualisieren Sie bei Bedarf die Fremdschlüsselreferenzen.

Dieser Ansatz bewahrt die ursprünglichen Identitätswerte, bewahrt die referenzielle Integrität über Tabellen hinweg und ermöglicht es Fabric Data Warehouse, nach der Migration wieder eindeutige Werte zu generieren.

Beispiel: Tabellen mit IDENTITY-Spalten migrieren

Das folgende Beispiel migriert eine Orders-Tabelle von einer Quellplattform in Fabric Data Warehouse unter Beibehaltung der Identitätswerte.

Schritt 1: Erstellen Sie eine Zieltabelle mit einer IDENTITY-Spalte

Erstelle die Zieltabelle in Fabric Data Warehouse. Die Primärschlüssel-Spalte verwendet IDENTITY:

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

Schritt 2: Daten mit IDENTITY_INSERT migrieren

Verwenden Sie SET IDENTITY_INSERT , um historische Daten mit den ursprünglichen Identitätswerten einzufügen. Diese Methode erhält bestehende IDs, sodass Beziehungen zwischen den Tabellen erhalten bleiben.

-- 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 größere Datensätze können Sie COPY INTO mit IDENTITY_INSERT verwenden:

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

Schritt 3: Identitätsspalten neu initialisieren

Nach der Datenmigration führst du RESEED mit DBCC CHECKIDENT für jede Tabelle aus. Diese Operation scannt alle verwendeten Identitätsbereiche und passt den nächsten Wert an, um Kollisionen mit migrierten Daten zu vermeiden:

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

Schritt 4: Überprüfen Sie die Migration und testen Sie neue Einfügungen

Bestätigen Sie, dass die migrierten Daten intakt sind und dass neue Inserts automatisch generierte Werte erhalten, die sich nicht mit den migrierten Werten überschneiden:

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

Bewährte Methoden

  • Immer nach der Wanderung neu einsäen. Führe DBCC CHECKIDENT('table_name', RESEED) nach jeder Tabellenmigration aus, um Kollisionen von Identitätswerten zu vermeiden.
  • Verwenden Sie COPY INTO für große Datensätze. Für die Massenmigration großer Tabellen bietet COPY INTO mit IDENTITY_INSERT ON eine bessere Leistung als INSERT-Anweisungen Zeile für Zeile.
  • Validiere die referenzielle Integrität. Vergewissern Sie sich nach der Migration, dass Fremdschlüsselwerte in Kindtabellen auf gültige Zeilen in übergeordneten Tabellen verweisen.