Migrar columnas de IDENTIDAD a Fabric Data Warehouse

Esto se aplica a:✅ Almacén en Microsoft Fabric

Este artículo describe cómo utilizar SET IDENTITY_INSERT y DBCC CHECKIDENT para preservar valores de identidad existentes durante la migración desde SQL Server, Azure SQL Database o Azure Synapse Analytics, y garantizar la integridad referencial.

Diferencias clave respecto a otras plataformas

Antes de migrar, entiende estas diferencias en la IDENTITY implementación en Fabric Data Warehouse:

  • IDENTITY Las columnas solo admiten el tipo de dato BIGINT .
  • Los parámetros SEED y INCREMENT no se admiten. El sistema gestiona los valores internamente.
  • Los valores están garantizados como únicos, pero no necesariamente secuenciales. Pueden producirse lagunas debido a la arquitectura de computación distribuida.
  • Fabric Data Warehouse no aplica restricciones de clave.

Estrategia de migración

Al usar la compatibilidad con IDENTITY_INSERT, puedes migrar valores de identidad directamente en tablas de Fabric Data Warehouse que usan columnas IDENTITY:

  1. Crea tablas de destino en Fabric Data Warehouse con IDENTITY columnas.
  2. Usarse SET IDENTITY_INSERT ON para insertar datos históricos con los valores de identidad originales conservados.
  3. Ejecuta DBCC CHECKIDENT con RESEED para realinear el rango de identidad tras la migración.
  4. Actualiza las referencias de clave extranjera si es necesario.

Este enfoque preserva los valores de identidad originales, mantiene la integridad referencial entre tablas y permite Fabric Data Warehouse reanudar la generación de valores únicos tras la migración.

Ejemplo: migrar tablas con columnas IDENTIDAD

El siguiente ejemplo migra una Orders tabla de una plataforma de origen a Fabric Data Warehouse preservando los valores de identidad.

Paso 1: Crea una tabla de destino con una columna IDENTIDAD

Crea la tabla de destino en Fabric Data Warehouse. La columna clave principal utiliza IDENTITY:

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

Paso 2: Migrar datos con IDENTITY_INSERT

Úsalo SET IDENTITY_INSERT para insertar datos históricos junto con los valores de identidad originales. Este método preserva los IDs existentes para que las relaciones entre tablas permanezcan intactas.

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

Para conjuntos de datos más grandes, puedes usar 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'
);

Paso 3: Resembrar columnas de identidad

Después de migrar los datos, ejecuta DBCC CHECKIDENT con RESEED en cada tabla. Esta operación escanea todos los rangos de identidad utilizados y ajusta el siguiente valor para evitar colisiones con datos migrados:

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

Paso 4: Verifica la migración y prueba nuevos insertos

Confirma que los datos migrados están intactos y que los nuevos insertos reciben valores generados automáticamente que no coinciden con los de los migrados:

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

procedimientos recomendados

  • Siempre resembra después de la migración. Ejecuta DBCC CHECKIDENT('table_name', RESEED) después de cada migración de tabla para evitar colisiones de valores de identidad.
  • Usa COPY INTO para conjuntos de datos grandes. Para la migración masiva de tablas grandes, COPY INTO con IDENTITY_INSERT ON ofrece un mejor rendimiento que las instrucciones INSERT fila por fila.
  • Valida la integridad referencial. Tras la migración, verifica que los valores de clave foránea de las tablas hijas hagan referencia a filas válidas de las tablas padre.