Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se para:✅ Armazém 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, Base 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, compreenda estas diferenças na implementação do IDENTITY Fabric Data Warehouse:
-
IDENTITYas colunas suportam apenas o tipo de dados bigint . - Os parâmetros
SEEDeINCREMENTnão são suportados. O sistema gere os valores internamente. - Os valores são garantidos únicos, mas não necessariamente sequenciais. Podem ocorrer lacunas devido à arquitetura de computação distribuída.
- O Fabric Data Warehouse não impõe restrições principais.
Estratégia de migração
Ao utilizar o suporte para IDENTITY_INSERT, pode migrar valores de identidade diretamente para tabelas do Fabric Data Warehouse que utilizam colunas IDENTITY:
- Cria 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. - Executa
DBCC CHECKIDENTcomRESEEDpara realinhar o intervalo de identidade após a migração. - Atualize as referências de chaves estrangeiras, se necessário.
Esta abordagem preserva os valores de identidade originais, mantém a integridade referencial entre tabelas e permite Fabric Data Warehouse retomar a geração de valores únicos após a migração.
Exemplo: migrar tabelas com colunas IDENTITY
O exemplo seguinte migra uma Orders tabela de uma plataforma de origem para Fabric Data Warehouse preservando os valores de identidade.
Passo 1: Criar uma tabela de destino com uma coluna IDENTIDADE
Cria a tabela de destinos no Fabric Data Warehouse. A coluna principal de chave utiliza 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. Este método preserva IDs existentes para que as relações entre 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, 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: Reseed das colunas de identidade
Depois de migrar os dados, execute DBCC CHECKIDENT com RESEED em cada tabela. Esta operação analisa todos os intervalos de identidade utilizados e ajusta o valor seguinte para evitar colisões com dados migrados:
DBCC CHECKIDENT('dbo.Orders', RESEED);
Passo 4: Verificar a migração e testar novos inserts
Confirme que os dados migrados estão intactos e que os 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;
Melhores práticas
- Sempre resemear 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 conjuntos de dados grandes. Para a migração em massa de tabelas grandes,
COPY INTOcomIDENTITY_INSERT ONproporciona um melhor desempenho do que instruçõesINSERTexecutadas linha a linha. - Valide a integridade referencial. Após a migração, verifique se os valores de chave estrangeira nas tabelas filhas referenciam linhas válidas nas tabelas principais.