Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:✅ Warehouse i Microsoft Fabric
Den här artikeln beskriver hur man använder SET IDENTITY_INSERT och DBCC CHECKIDENT för att bevara befintliga identitetsvärden under migrering från SQL Server, Azure SQL Database eller Azure Synapse Analytics, och säkerställa referensintegritet.
Viktiga skillnader från andra plattformar
Innan du migrerar, förstå dessa skillnader i implementeringen IDENTITY i Fabric Data Warehouse:
-
IDENTITYKolumner stöder endast bigint-datatypen . - Parametrarna
SEEDochINCREMENTstöds inte. Systemet hanterar värderingar internt. - Värden är garanterade unika men inte nödvändigtvis sekventiella. Luckor kan uppstå på grund av den distribuerade beräkningsarkitekturen.
- Fabric Data Warehouse tillämpar inte viktiga begränsningar.
Migreringsstrategi
Genom att använda IDENTITY_INSERT support kan du migrera identitetsvärden direkt till Fabric Data Warehouse tabeller som använder IDENTITY kolumner:
- Skapa destinationstabeller i Fabric Data Warehouse med
IDENTITYkolumner. - Använd
SET IDENTITY_INSERT ONför att infoga historisk data med de ursprungliga identitetsvärdena bevarade. - Kör
DBCC CHECKIDENTmedRESEEDför att justera identitetsintervallet efter migration. - Uppdatera referenser till främmande nyckel om det behövs.
Denna metod bevarar de ursprungliga identitetsvärdena, bibehåller referensintegritet över tabeller och tillåter Fabric Data Warehouse att återuppta genereringen av unika värden efter migrering.
Exempel: Migrera tabeller med IDENTITY-kolumner
Följande exempel migrerar en Orders tabell från en källplattform till Fabric Data Warehouse samtidigt som identitetsvärden bevaras.
Steg 1: Skapa en destinationstabell med en IDENTITY-kolumn
Skapa destinationstabellen i Fabric Data Warehouse. Primärnyckelkolumnen använder IDENTITY:
CREATE TABLE dbo.Orders (
OrderID BIGINT IDENTITY,
OrderDate DATE,
CustomerID BIGINT,
TotalAmount DECIMAL(18, 2)
);
Steg 2: Migrera data med IDENTITY_INSERT
Använd SET IDENTITY_INSERT för att infoga historisk data med de ursprungliga identitetsvärdena. Denna metod bevarar befintliga ID:n så att relationer mellan tabeller förblir intakta.
-- 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 större datamängder kan du använda COPY INTO med 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'
);
Steg 3: Omseeda identitetskolumner
När data har migrerats kör du DBCC CHECKIDENT med RESEED på varje tabell. Denna operation skannar alla använda identitetsintervall och justerar nästa värde för att undvika kollisioner med migrerad data:
DBCC CHECKIDENT('dbo.Orders', RESEED);
Steg 4: Verifiera migreringen och testa nya insättningar
Bekräfta att den migrerade datan är intakt och att nya inserts får automatiskt genererade värden som inte överlappar med migrerade värden:
-- 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;
Metodtips
- Utför alltid reseed igen efter migrering. Kör
DBCC CHECKIDENT('table_name', RESEED)efter varje tabellmigrering för att förhindra identitetsvärdekollisioner. - Använd COPY INTO för stora datamängder. För massmigrering av stora tabeller ger
COPY INTOmedIDENTITY_INSERT ONbättre prestanda än rad-för-rad-INSERT-satser. - Validera referensiell integritet. Efter migreringen, kontrollera att främmande nyckelvärden i barntabeller refererar till giltiga rader i föräldratabeller.