Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
-
IDENTITYLas columnas solo admiten el tipo de dato BIGINT . - Los parámetros
SEEDyINCREMENTno 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:
- Crea tablas de destino en Fabric Data Warehouse con
IDENTITYcolumnas. - Usarse
SET IDENTITY_INSERT ONpara insertar datos históricos con los valores de identidad originales conservados. - Ejecuta
DBCC CHECKIDENTconRESEEDpara realinear el rango de identidad tras la migración. - 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 INTOconIDENTITY_INSERT ONofrece un mejor rendimiento que las instruccionesINSERTfila 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.