Migracja kolumn IDENTITY do Fabric Data Warehouse

Dotyczy:✅ Magazyn w systemie Microsoft Fabric

Ten artykuł opisuje, jak korzystać z SET IDENTITY_INSERT i DBCC CHECKIDENT, aby zachować istniejące wartości tożsamości podczas migracji z SQL Server, Azure SQL Database lub Azure Synapse Analytics oraz zapewnić integralność referencyjną.

Kluczowe różnice w porównaniu z innymi platformami

Przed migracją należy zrozumieć te różnice w IDENTITY implementacji w usłudze Fabric Data Warehouse:

  • IDENTITY kolumny obsługują tylko typ danych bigint .
  • SEED i INCREMENT parametry nie są obsługiwane. System zarządza wartościami wewnętrznie.
  • Wartości są gwarantowane unikalne, ale niekoniecznie sekwencyjne. Luki mogą powstać z powodu rozproszonej architektury obliczeniowej.
  • Magazyn danych Fabric nie wymusza kluczowych ograniczeń.

Strategia migracji

Dzięki wsparciu IDENTITY_INSERT możesz bezpośrednio przenosić wartości tożsamości do Fabric Data Warehouse tabel używających IDENTITY kolumn:

  1. Twórz tabele docelowe w usłudze Fabric Data Warehouse z IDENTITY kolumnami.
  2. Użyj SET IDENTITY_INSERT ON, aby wstawić dane historyczne z zachowaniem oryginalnych wartości IDENTITY.
  3. Uruchom DBCC CHECKIDENT za pomocą RESEED, aby ponownie wyrównać zakres tożsamości po migracji.
  4. Zaktualizuj odniesienia do kluczy obcych, jeśli zajdzie taka potrzeba.

Takie podejście zachowuje oryginalne wartości tożsamości, zachowuje integralność referencyjną między tabelami i pozwala Fabric Data Warehouse wznowić generowanie unikalnych wartości po migracji.

Przykład: Migracja tabel z kolumnami IDENTITY

Poniższy przykład migruje tabelę Orders z platformy źródłowej do Fabric Data Warehouse przy zachowaniu wartości tożsamości.

Krok 1: Stwórz tabelę docelową z kolumną IDENTITY

Utwórz tabelę docelową w Fabric Data Warehouse. Kolumna klucza podstawowego używa IDENTITY:

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

Krok 2: Migracja danych za pomocą IDENTITY_INSERT

Użyj SET IDENTITY_INSERT do wstawiania danych historycznych z oryginalnymi wartościami tożsamości. Ta metoda zachowuje istniejące ID, dzięki czemu relacje między tabelami pozostają nienaruszone.

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

W przypadku większych zbiorów danych można użyć polecenia COPY INTO z użyciem 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'
);

Krok 3: Ponowne ustawienie kolumn tożsamościowych

Po migracji danych uruchom DBCC CHECKIDENT z użyciem RESEED dla każdej tabeli. Operacja ta skanuje wszystkie używane zakresy tożsamości i dostosowuje kolejną wartość, aby uniknąć kolizji z migrowanymi danymi:

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

Krok 4: Zweryfikowaj migrację i przetestuj nowe wkładki

Potwierdź, że przeniesione dane są nienaruszone i że nowe wstawienia otrzymują automatycznie wygenerowane wartości, które nie pokrywają się z przeniesionymi wartościami:

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

Najlepsze rozwiązania

  • Zawsze wysiewaj ponownie po migracji. Uruchom DBCC CHECKIDENT('table_name', RESEED) po każdej migracji tabeli, aby zapobiec kolizjom wartości identyfikatorów.
  • Użyj COPY INTO dla dużych zbiorów danych. W przypadku masowej migracji dużych tabel COPY INTO z IDENTITY_INSERT ON zapewnia lepszą wydajność niż instrukcje INSERT wykonywane wiersz po wierszu.
  • Zweryfikowaj integralność referencyjną. Po migracji sprawdź, czy wartości kluczy obcych w tabelach potomnych odnoszą się do prawidłowych wierszy w tablicach nadrzędnych.