Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
-
IDENTITYSpalten unterstützen nur den Bigint-Datentyp . -
SEEDUndINCREMENTParameter 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:
- Erstelle Zieltabellen in Fabric Data Warehouse mit
IDENTITYSpalten. - Verwenden Sie
SET IDENTITY_INSERT ONes, um historische Daten einzufügen, wobei die ursprünglichen Identitätswerte erhalten bleiben. - Führen Sie
DBCC CHECKIDENTmitRESEEDaus, um den IDENTITY-Bereich nach der Migration neu auszurichten. - 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 INTOmitIDENTITY_INSERT ONeine bessere Leistung alsINSERT-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.