Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
si applica a:✅ Magazzino di dati in Microsoft Fabric
Questo articolo descrive come utilizzare SET IDENTITY_INSERT e DBCC CHECKIDENT per preservare i valori di identità esistenti durante la migrazione da SQL Server, database SQL di Azure o Azure Synapse Analytics, e garantire l'integrità referenziale.
Differenze chiave rispetto ad altre piattaforme
Prima di migrare, comprendi queste differenze nell'implementazione IDENTITY in Fabric Data Warehouse:
-
IDENTITYLe colonne supportano solo il tipo di dato BIGINT . -
SEEDeINCREMENTi parametri non sono supportati. Il sistema gestisce i valori internamente. - I valori sono garantiti unici ma non necessariamente sequenziali. Possono verificarsi lacune a causa dell'architettura di calcolo distribuita.
- Fabric Data Warehouse non applica vincoli di chiave.
Strategia di migrazione
Usando il supporto IDENTITY_INSERT, puoi migrare direttamente i valori di identità nelle tabelle di Fabric Data Warehouse che usano colonne IDENTITY:
- Crea tabelle di destinazione in Fabric Data Warehouse con
IDENTITYcolonne. - Usare
SET IDENTITY_INSERT ONper inserire dati storici mantenendo i valori ID originali. - Esegui
DBCC CHECKIDENTconRESEEDper riallineare l'intervallo di identità dopo la migrazione. - Aggiorna le riferimenti della chiave esterna se necessario.
Questo approccio preserva i valori identità originali, mantiene l'integrità referenziale tra le tabelle e permette Fabric Data Warehouse riprendere la generazione di valori unici dopo la migrazione.
Esempio: Migrare tabelle con colonne IDENTITY
Il seguente esempio migra una Orders tabella da una piattaforma sorgente a Fabric Data Warehouse preservando i valori di identità.
Passo 1: Crea una tabella di destinazione con una colonna IDENTITY
Crea la tabella delle destinazioni in Fabric Data Warehouse. La colonna chiave primaria utilizza IDENTITY:
CREATE TABLE dbo.Orders (
OrderID BIGINT IDENTITY,
OrderDate DATE,
CustomerID BIGINT,
TotalAmount DECIMAL(18, 2)
);
Passo 2: Migra i dati con IDENTITY_INSERT
Usare SET IDENTITY_INSERT per inserire dati storici con i valori di identità originali. Questo metodo preserva gli ID esistenti in modo che le relazioni tra le tabelle rimangano intatte.
-- 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;
Per dataset più grandi, puoi usare COPY INTO con 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'
);
Passo 3: Risemina le colonne di identità
Dopo aver migrato i dati, esegui DBCC CHECKIDENT con RESEED su ogni tabella. Questa operazione scansiona tutti gli intervalli di identità utilizzati e aggiusta il valore successivo per evitare collisioni con i dati migrati:
DBCC CHECKIDENT('dbo.Orders', RESEED);
Passo 4: Verifica la migrazione e testa nuovi inserti
Conferma che i dati migrati siano intatti e che i nuovi inserti ricevano valori generati automaticamente che non si sovrappongono a quelli migrati:
-- 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;
Procedure consigliate
- Riesegui sempre il seeding dopo la migrazione. Esegui
DBCC CHECKIDENT('table_name', RESEED)dopo ogni migrazione di tabelle per prevenire collisioni di valori identi. - Usa COPY INTO per grandi dataset. Per la migrazione in massa di tabelle di grandi dimensioni, l'uso di
COPY INTOconIDENTITY_INSERT ONoffre prestazioni migliori rispetto alle istruzioniINSERTeseguite riga per riga. - Valida l'integrità referenziale. Dopo la migrazione, verifica che i valori delle chiavi esterne nelle tabelle figlie facciano riferimento alle righe valide nelle tabelle genitori.