Migrar colunas IDENTITY para o Fabric Data Warehouse

Aplica-se a:✅Armazém de dados no Microsoft Fabric

Este artigo descreve como usar o SET IDENTITY_INSERT e o DBCC CHECKIDENT para preservar valores de identidade existentes durante a migração de SQL Server, Banco de Dados SQL do Azure ou Azure Synapse Analytics, e garantir a integridade referencial.

Principais diferenças em relação a outras plataformas

Antes de migrar, entenda estas diferenças na implementação do IDENTITY no Fabric Data Warehouse:

  • IDENTITY colunas suportam apenas o tipo de dados bigint.
  • SEED e INCREMENT parâmetros não são suportados. O sistema gerencia os valores internamente.
  • Os valores são garantidos únicos, mas não necessariamente sequenciais. Lacunas podem ocorrer devido à arquitetura de computação distribuída.
  • O Fabric Data Warehouse não impõe restrições de chave.

Estratégia de migração

Ao usar o suporte a IDENTITY_INSERT, você pode migrar valores de identidade diretamente para tabelas do Fabric Data Warehouse que usam colunas IDENTITY:

  1. Crie tabelas de destino em Fabric Data Warehouse com IDENTITY colunas.
  2. Use SET IDENTITY_INSERT ON para inserir dados históricos com os valores originais de identidade preservados.
  3. Execute DBCC CHECKIDENT com RESEED para realinhar a faixa de identidade após a migração.
  4. Atualize as referências de chave estrangeira, se necessário.

Essa abordagem preserva os valores originais de identidade, mantém a integridade referencial entre tabelas e permite que Fabric Data Warehouse retome a geração de valores únicos após a migração.

Exemplo: migrar tabelas com colunas IDENTITY

O exemplo a seguir migra uma Orders tabela de uma plataforma de origem para Fabric Data Warehouse preservando os valores de identidade.

Passo 1: Crie uma tabela de destino com uma coluna IDENTIDADE

Crie a tabela de destino em Fabric Data Warehouse. A coluna de chave primária usa IDENTITY:

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

Passo 2: migrar dados com IDENTITY_INSERT

Use SET IDENTITY_INSERT para inserir dados históricos com os valores originais de identidade. Esse método preserva IDs existentes para que as relações entre as tabelas permaneçam 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 dados maiores, você pode usar COPY INTO com 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: Redefinir colunas de identidade

Após migrar os dados, execute DBCC CHECKIDENT com RESEED em cada tabela. Esta operação escaneia todos os intervalos de identidade usados e ajusta o próximo valor para evitar colisões com dados migrados:

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

Passo 4: Verifique a migração e teste novos inserts

Confirme que os dados migrados estão intactos e que novos inserts recebem valores gerados automaticamente que não se sobrepõem aos valores 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;

Práticas recomendadas

  • Sempre repopule após a migração. Execute DBCC CHECKIDENT('table_name', RESEED) após cada migração de tabela para evitar colisões de valores de identidade.
  • Use COPY INTO para grandes conjuntos de dados. Na migração em massa de tabelas grandes, COPY INTO com IDENTITY_INSERT ON oferece melhor desempenho do que instruções INSERT linha por linha.
  • Valide a integridade referencial. Após a migração, verifique se os valores de chave estrangeira em tabelas filhos fazem referência a linhas válidas nas tabelas pais.