Tenho o seguinte cenário: um banco de dados no SQL Server 2012 que deve replicar as alterações de forma transacional para um banco de dados SQL Server 2000. Como os esquemas de dois bancos de dados diferem, uma transformação deve ser feita para o destino. Ambos os bancos de dados estão na mesma rede. Qual é a melhor abordagem?
- Use gatilhos no banco de dados de origem para fazer as transformações e realizar as alterações no destino.
Use a replicação transacional do SQL Server (mas as transformações parecem impossíveis, como eu sei).
Alguma alternativa?
Use um servidor vinculado como Aaron mencionou e carregue seus dados em massa para suas tabelas SQL 2000 depois de fazer a transformação no SQL 2012. Você pode apenas criar algumas tabelas de teste no SQL 2012 onde você pode colocar seus dados transformados conforme eles chegam.
Cuidado com o servidor vinculado de 2012 a 2000 usando SQLNCLI10: veja aqui SQLNCLI10
O novo cliente SQLNCLI11 não funciona com SQL 2000 até onde eu sei.
Como você tem um esquema diferente e uma estrutura de tabela diferente, a replicação transacional do SQL Server está fora do escopo.
Alguma alternativa?
Como alternativa, é melhor projetar sua própria solução personalizada usando:
Estrutura do Microsoft Sync e controle de alterações (CT) (não captura de dados de alteração (CDC)).
Observação : a fonte deve ser SQL Server 2008 e superior, pois o CT foi introduzido no sql server 2008 e superior.
Você também pode examinar o Service Broker , pois ele é otimizado para fluxo de dados unidirecional e é MUITO mais rápido do que gravar em uma tabela, até mesmo em um heap. Além disso, você mantém a consistência transacional do SQL Server, portanto, uma vez que os dados tenham sido gravados em uma fila, é garantido que eles estarão na fila e só serão excluídos do servidor de origem se forem recebidos.
Consulte também: