Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :✅ Entrepôt dans Microsoft Fabric
Cet article décrit comment utiliser SET IDENTITY_INSERT et DBCC CHECKIDENT pour préserver les valeurs d’identité existantes lors de la migration depuis SQL Server, Azure SQL Database ou Azure Synapse Analytics, et garantir l’intégrité référentielle.
Différences clés par rapport aux autres plateformes
Avant de migrer, comprenez ces différences dans la IDENTITY mise en œuvre en Fabric Data Warehouse :
-
IDENTITYLes colonnes ne prennent en charge que le type de données BIGINT . - Les paramètres
SEEDetINCREMENTne sont pas pris en charge. Le système gère les valeurs en interne. - Les valeurs sont garanties uniques mais pas nécessairement séquentielles. Des lacunes peuvent apparaître en raison de l’architecture de calcul distribuée.
- Fabric Data Warehouse n’applique pas de contraintes de clé.
Stratégie de migration
Grâce à la prise en charge de IDENTITY_INSERT, vous pouvez migrer directement les valeurs d’identité vers des tables de Fabric Data Warehouse qui utilisent des colonnes IDENTITY :
- Créez des tables de destination dans Fabric Data Warehouse avec
IDENTITYcolonnes. - À utiliser
SET IDENTITY_INSERT ONpour insérer des données historiques avec les valeurs d’identité originales conservées. - Exécutez
DBCC CHECKIDENTavecRESEEDpour réaligner la plage d’identité après la migration. - Mettez à jour les références à clés étrangères si nécessaire.
Cette approche préserve les valeurs d’identité originales, maintient l’intégrité référentielle entre les tables, et permet Fabric Data Warehouse de reprendre la génération de valeurs uniques après la migration.
Exemple : Migrer des tables avec des colonnes dotées de la propriété IDENTITY
L’exemple suivant migre une Orders table d’une plateforme source vers Fabric Data Warehouse tout en préservant les valeurs d’identité.
Étape 1 : Créer une table de destination avec une colonne IDENTITÉ
Créez la table de destination dans Fabric Data Warehouse. La colonne clé principale utilise IDENTITY:
CREATE TABLE dbo.Orders (
OrderID BIGINT IDENTITY,
OrderDate DATE,
CustomerID BIGINT,
TotalAmount DECIMAL(18, 2)
);
Étape 2 : Migrer les données avec IDENTITY_INSERT
À utiliser SET IDENTITY_INSERT pour insérer des données historiques avec les valeurs d’identité originales. Cette méthode préserve les identifiants existants afin que les relations entre les tables restent intactes.
-- 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;
Pour des ensembles de données plus volumineux, vous pouvez utiliser COPY INTO avec 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'
);
Étape 3 : Réinitialiser les colonnes d’identité
Après avoir migré les données, exécutez DBCC CHECKIDENT avec RESEED sur chaque table. Cette opération analyse toutes les plages d’identité utilisées et ajuste la valeur suivante pour éviter les collisions avec les données migrées :
DBCC CHECKIDENT('dbo.Orders', RESEED);
Étape 4 : Vérifier la migration et tester les nouveaux inserts
Confirmez que les données migrées sont intactes et que les nouveaux inserts reçoivent des valeurs générées automatiquement qui ne chevauchent pas celles migrées :
-- 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;
Bonnes pratiques
- Toujours réinitialiser les données après la migration. Exécutez
DBCC CHECKIDENT('table_name', RESEED)après chaque migration de table pour éviter les collisions de valeurs d’identité. - Utilisez COPY INTO pour de grands ensembles de données. Pour la migration en masse de grandes tables, l’utilisation de
COPY INTOavecIDENTITY_INSERT ONoffre de meilleures performances que les instructionsINSERTligne par ligne. - Validez l’intégrité référentielle. Après la migration, vérifiez que les valeurs de clés étrangères dans les tables enfants font référence aux lignes valides dans les tables parentes.