Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
-
IDENTITYkolumny obsługują tylko typ danych bigint . -
SEEDiINCREMENTparametry 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:
- Twórz tabele docelowe w usłudze Fabric Data Warehouse z
IDENTITYkolumnami. - Użyj
SET IDENTITY_INSERT ON, aby wstawić dane historyczne z zachowaniem oryginalnych wartości IDENTITY. - Uruchom
DBCC CHECKIDENTza pomocąRESEED, aby ponownie wyrównać zakres tożsamości po migracji. - 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 INTOzIDENTITY_INSERT ONzapewnia lepszą wydajność niż instrukcjeINSERTwykonywane 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.