Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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:
-
IDENTITYcolunas suportam apenas o tipo de dados bigint. -
SEEDeINCREMENTparâ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:
- Crie tabelas de destino em Fabric Data Warehouse com
IDENTITYcolunas. - Use
SET IDENTITY_INSERT ONpara inserir dados históricos com os valores originais de identidade preservados. - Execute
DBCC CHECKIDENTcomRESEEDpara realinhar a faixa de identidade após a migração. - 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 INTOcomIDENTITY_INSERT ONoferece melhor desempenho do que instruçõesINSERTlinha 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.