Comparação de comparadores para sincronizar esquemas e dados do banco de dados do MS SQL Server

Descrição da necessidade geral de sincronização de alterações


Ao trabalhar com bancos de dados, você geralmente precisa resolver o problema de sincronizar as alterações.
Se a empresa usar apenas um ambiente industrial, além disso, pelo menos um ambiente adicional adicional será necessário para testar as alterações feitas. Nesse caso, torna-se necessário transferir alterações do ambiente de teste para o industrial.

Com o crescimento da empresa, o número de servidores e ambientes virtuais necessários pode aumentar e o número de instâncias de sistemas de gerenciamento de banco de dados também pode aumentar, havendo necessidade de sincronização mais complexa.

Como regra, os bancos de dados são desenvolvidos em um ambiente dedicado. Em seguida, as alterações são transferidas para o ambiente de teste para vários testes (testes de unidade, autotestes, testes de carga etc.). E somente depois de todas as etapas de desenvolvimento e inspeções realizar a transferência de alterações para o ambiente industrial.

Com uma infraestrutura suficientemente grande, torna-se necessário transferir alterações para vários ambientes industriais ao mesmo tempo. Além disso, o desenvolvimento do banco de dados pode ser dividido em diferentes ambientes por funcionalidade e, em seguida, é necessário transferir periodicamente as alterações entre esses ambientes.

Há casos em que as alterações foram aplicadas fora do ambiente de desenvolvimento e precisam ser transferidas para ele. Mas tais situações devem ser minimizadas para que não haja ameaça ao correto funcionamento do sistema.


Em geral, a sequência de transferência de alterações pode ser representada da seguinte maneira:
  1. Entre ambientes de desenvolvimento.
  2. De ambientes de desenvolvimento a ambientes de teste.
  3. Entre ambientes de teste. Se você fizer alterações que não vieram do ambiente de desenvolvimento para qualquer um dos ambientes de teste, essas alterações também serão transferidas para o ambiente de desenvolvimento. Como regra, todas as alterações devem vir do ambiente de desenvolvimento para o ambiente de teste, mas não vice-versa.
  4. Do ambiente de teste aos ambientes pré-industriais, onde as alterações são coletadas para cada ambiente industrial específico, são executados os testes de integração mais recentes, bem como testes para reverter as alterações em caso de falhas pré-especificadas.
  5. Do ambiente pré-industrial ao ambiente industrial, com a capacidade de reverter rapidamente as alterações feitas.

Existem várias ferramentas para sincronizar alterações entre ambientes, por exemplo:
  1. Visual Studio Comparer
  2. Serviços de Integração do SQL Server
  3. Comparador dbForge da Devart
  4. Quest Software ApexSQL
  5. Soluções RedGate

Normalmente, as soluções escritas em .NET (por exemplo, escritas em C #) funcionam com o MS SQL Server.

Este artigo discutirá um exemplo de transferência de alterações em um banco de dados do MS SQL Server de um servidor para outro usando as ferramentas do Devart, do Quest Software e do RedGate. No final, será feita uma comparação dessas ferramentas.

Neste artigo, por exemplo, consideraremos o banco de dados SRV, projetado para servir o DBMS do MS SQL Server. Você pode baixar suas fontes aqui .
Esse banco de dados SRV é distribuído gratuitamente para qualquer finalidade.

Devart Solutions


As soluções de sincronização de banco de dados do MS SQL Server da Devart são denominadas DbForge Data Comparer , DbForge Schema Comparer e dbForge Compare Bundle para SQL Server . Os dois primeiros são integrados ao DbForge Studio para MS SQL Server e o terceiro diretamente ao SSMS .
Revisão detalhada da solução Devart

Sincronização de esquema de banco de dados


Depois de abrir o estúdio, vá para a aba “Database Sync” e crie uma nova conexão clicando no botão “New Connection”:


Na janela de configurações de conexão que é aberta, você deve inserir os dados necessários para se conectar à instância do MS SQL Server (servidor de origem). Observe que, além da autenticação do MS SQL Server, Windows, Active Directory, a autenticação por meio do MFA foi exibida. Após preencher todos os campos obrigatórios, clique no botão "Testar conexão" para testar a conexão:


Depois que a conexão é estabelecida, a seguinte caixa de diálogo é exibida:


Em seguida, clique no botão “OK” na caixa de diálogo e o mesmo botão na janela de configurações da conexão.

Agora, uma nova conexão apareceu:


Da mesma forma, você precisa conectar todas as instâncias necessárias do MS SQL Server (neste exemplo, você precisa criar uma conexão para o servidor de destino).

Depois disso, clique em "Nova comparação de esquema" para configurar o processo de comparação de esquemas de banco de dados no servidor de origem e o banco de dados no servidor de destino:


Uma janela de configurações para comparar circuitos será exibida.

Na guia "Origem e destino", à esquerda no painel Origem, você deve selecionar:
  1. tipo
  2. conexão
  3. banco de dados de origem

À direita no painel Destino, você precisa selecionar:
  1. tipo
  2. conexão
  3. banco de dados do receptor

Observe que no tipo você pode selecionar não apenas o banco de dados, mas também o diretório do script, instantâneo, controle de versão e backup. No nosso caso, selecionamos no tipo "banco de dados".

Após selecionar todas as configurações, você deve clicar no botão "Avançar" para continuar configurando a sincronização dos esquemas do banco de dados.

Se dois bancos de dados inicialmente idênticos forem comparados, você poderá começar imediatamente a comparar os esquemas clicando no botão "Comparar".

Se necessário, você pode acessar qualquer guia de configurações clicando no item correspondente na janela esquerda.

A qualquer momento, você pode salvar as configurações como um arquivo bat clicando no botão "Salvar linha de comando" no canto inferior esquerdo da janela.

Na maioria dos casos, ao rolar alterações entre bancos de dados inicialmente idênticos, basta clicar no botão "Comparar". Mas para estudar a funcionalidade, você deve clicar em "Avançar":


Na guia Opções, você pode definir várias configurações ou deixá-las por padrão:


Na guia "Mapeamento de esquema", você pode configurar o mapeamento de esquemas por nome:


Na guia "Mapeamento de tabela", você pode configurar o mapeamento de tabelas e colunas:


Na guia "Filtro de objetos", você pode especificar objetos para comparação.

Depois disso, se necessário, você pode retornar às etapas anteriores.

No final, você deve clicar no botão "Comparar" para iniciar o processo de comparação dos esquemas dos bancos de dados especificados:


A janela de configurações de comparação do esquema do banco de dados desaparecerá e uma janela aparecerá com um indicador do processo de comparação:


No final do processo, preste atenção na janela. Você pode alterar as configurações de comparação clicando no botão "Editar comparação" no canto superior esquerdo da janela. À direita desse botão, há um círculo com uma seta - este é o botão de atualização, que inicia o processo de comparação de esquemas novamente. Também estão localizados abaixo todos os servidores registrados anteriormente:


Através do menu principal em Arquivo, você pode salvar as configurações para comparar esquemas como um arquivo com a extensão scomp.

Agora vamos prestar atenção na parte central da janela. Aqui você precisa selecionar os objetos necessários para sincronização com as marcas de seleção. À esquerda estão os objetos de origem e, à direita, o receptor. Abaixo, da mesma maneira, está o código para definir objetos. Os objetos para comparação são divididos em 4 seções com uma contagem do número desses objetos em cada seção.
Aqui, uma tabela é selecionada para visualizar o código de definição, que está na fonte e no receptor. Portanto, este objeto está localizado na seção "Diferente":


Quando você seleciona esse objeto, seu código de definição à esquerda será movido para a direita ao sincronizar esquemas de banco de dados para o receptor.
Aqui, para visualizar o código de definição, é selecionada uma visualização que está apenas na fonte. Portanto, este objeto está localizado na seção "Somente na fonte" e não há um código de definição à direita:


Ao escolher esse objeto, seu código de criação será gerado para o receptor.
Aqui, para visualizar o código de definição, é selecionada uma visualização que está apenas no receptor. Portanto, este objeto está localizado na seção "Somente no destino" e não há código de definição para ele à esquerda:


Ao escolher esse objeto, seu código de exclusão será gerado para o receptor.
Em seguida, para iniciar o processo de sincronização dos esquemas do banco de dados, clique em um dos botões destacados em vermelho na figura:


Na guia "Saída", você deve especificar como o processo de sincronização ocorrerá. Geralmente, a geração do script é selecionada no estúdio ou em um arquivo. No nosso caso, escolheremos a primeira opção. É recomendável que você siga cuidadosamente a sequência de todas as guias para configurar o processo de sincronização:


Na guia "Opções", você pode definir várias configurações para sincronizar os esquemas do banco de dados.
Geralmente, todas as configurações do grupo de backup do banco de dados são removidas.
Por padrão, no grupo de configurações "Transações", "Usar uma única transação" e "Definir nível de isolamento da transação como SERIALIZABLE" estão definidos, o que evita situações nas quais apenas partes das alterações podem ser aplicadas - ou seja, as alterações serão aplicadas na íntegra ou de maneira nenhuma:


A guia Resumo exibe os resultados da seleção das configurações de sincronização. Se necessário, você pode retornar aos parágrafos anteriores.
Observe que as configurações para sincronizar esquemas de banco de dados também podem ser salvas em um arquivo bat clicando no botão "Salvar linha de comando" no canto inferior esquerdo da janela.
No final, você precisa clicar no botão "Sincronizar" para iniciar o processo de geração de um script para sincronizar os esquemas do banco de dados:


Após a conclusão, um script será gerado em uma nova janela:



Este script é o código para transferir alterações de esquema do banco de dados da origem para o receptor. Ele pode ser usado no servidor de destino ou salvo em um arquivo para uso posterior no servidor de destino. Como regra, em qualquer caso, esse script é salvo para aplicá-lo em vários servidores ao mesmo banco de dados após todas as verificações. Você pode fazer isso usando grupos de servidores registrados no SSMS enviando o script resultante imediatamente para todo o grupo de servidores desejado:


Após a sincronização, os objetos selecionados anteriormente devem desaparecer da janela de comparação de circuitos:


Sincronização de dados do banco de dados


Supõe-se que as conexões necessárias foram criadas conforme descrito acima em “Sincronização de Esquema do Banco de Dados”.

Depois disso, você precisa clicar em "Nova comparação de dados" para configurar o processo de comparação dos dados do banco de dados no servidor de origem e o banco de dados no servidor de destino:


Uma janela de configurações para comparar dados será exibida.

Na guia "Origem e destino", à esquerda no painel Origem, você deve selecionar:
  1. tipo
  2. conexão
  3. banco de dados de origem

À direita no painel Destino, você precisa selecionar:
  1. tipo
  2. conexão
  3. banco de dados do receptor

Observe que no tipo você pode selecionar não apenas o banco de dados, mas também o diretório e o backup do script. No nosso caso, selecionamos no tipo "banco de dados".

Após selecionar todas as configurações, clique em “Avançar” para continuar configurando a sincronização dos dados do banco de dados.

Ao contrário da comparação de circuitos, ao comparar dados, é recomendável que você execute todas as etapas de configuração em sequência.

Se necessário, você pode acessar qualquer guia de configurações clicando no elemento da janela correspondente à esquerda.

A qualquer momento, você pode salvar as configurações como um arquivo bat clicando no botão "Salvar linha de comando" no canto inferior esquerdo da janela.

Depois de definir a guia "Origem e destino", clique em "Avançar":


Na guia Opções, você pode definir várias configurações ou deixá-las por padrão:


A guia "Mapeamento" fornece uma lista de tabelas para sincronização de dados. Os pontos de exclamação indicam aquelas tabelas nas quais não há chave primária. Para essas tabelas, a correspondência deve ser feita manualmente. Para fazer isso, selecione a linha desejada (tabela) e clique com o botão direito do mouse nas reticências:


A janela correspondente aparecerá:


Depois disso, se necessário, você pode retornar às etapas anteriores.
No final, clique em "Comparar" para iniciar o processo de comparação dos dados dos bancos de dados especificados:


A janela de configurações para comparar os dados do banco de dados desaparecerá e uma janela aparecerá com um indicador do andamento da comparação:


No final do processo, preste atenção na janela. Você pode alterar as configurações de comparação clicando em "Editar comparação" no canto superior esquerdo da janela. À direita desse botão, há um círculo com uma seta - este é um botão de atualização que inicia o processo de comparação de dados novamente. Também estão localizados abaixo todos os servidores registrados anteriormente:


Através do menu principal em Arquivo, você pode salvar as configurações para comparar circuitos como um arquivo com a extensão dcomp.

Agora vamos prestar atenção na parte central da janela. Aqui você precisa selecionar os objetos necessários para sincronização com as marcas de seleção. À esquerda estão os objetos de origem e à direita - o receptor:


As seguintes informações são exibidas abaixo:
  1. para linhas inseridas - dados de linhas inseridas:

  2. para strings mutáveis ​​- comparação de strings:

  3. para linhas excluídas - dados de linhas excluídas:


No canto inferior esquerdo, se necessário, você pode selecionar não todas as linhas para alterações, mas as que você precisa. Por padrão, todas as linhas são selecionadas:


Você também pode alternar entre as linhas adicionadas, alteradas e excluídas usando as guias acima da própria tabela de dados:


Para controlar a visibilidade das colunas (campos) desejados, existe a funcionalidade necessária:


Por padrão, todas as colunas estão selecionadas.

Em seguida, para iniciar o processo de sincronização de dados do banco de dados, clique em um dos botões destacados em vermelho na imagem:


Na guia "Saída", você deve especificar como o processo de sincronização ocorrerá. Geralmente, a geração do script é selecionada no estúdio ou em um arquivo. No nosso caso, escolheremos a primeira opção. É recomendável que você siga cuidadosamente a sequência de todas as guias para configurar o processo de sincronização:


Na guia "Opções", você pode definir várias configurações para sincronização.

Geralmente, todas as configurações do grupo de backup do banco de dados são removidas.

Por padrão, no grupo de configurações "Transações", "Usar uma única transação" e "Definir nível de isolamento da transação como SERIALIZABLE" estão definidos, o que evita situações nas quais apenas partes das alterações podem ser aplicadas - ou seja, as alterações serão aplicadas na íntegra ou de maneira nenhuma:


A guia Resumo exibe os resultados da seleção das configurações de sincronização. Se necessário, você pode retornar aos parágrafos anteriores.

Observe que as configurações para sincronizar esquemas de banco de dados também podem ser salvas em um arquivo bat clicando em "Salvar linha de comando" no canto inferior esquerdo da janela.

No final, você precisa clicar em "Sincronizar" para iniciar o processo de geração de um script de sincronização:


Após a conclusão, um script será gerado em uma nova janela:



Este script é o código para transferir alterações de dados da fonte para o receptor. Pode ser aplicado no servidor receptor ou salvo em um arquivo para uso posterior no servidor receptor.

Após a sincronização, os objetos selecionados anteriormente devem desaparecer da janela de comparação de dados.

Visão geral do DbForge Compare Bundle para SQL Server


Além do dbForge Studio para SQL Server, você pode usar a ferramenta dbForge Compare Bungle para SQL Server do Devart, integrada ao SQL Server Management Studio (SSMS), para comparar dados e esquemas de banco de dados. Considere um exemplo de uso desta ferramenta no SSMS:


Aqui você precisa clicar com o botão direito do mouse no banco de dados desejado e selecionar a ação desejada: comparação de dados ou comparação de esquema. Depois disso, instale o banco de dados selecionado como uma fonte ou como um receptor. Da mesma forma, selecione o segundo banco de dados como receptor ou como fonte.

Após definir a fonte e o receptor, para iniciar a configuração da sincronização de dados ou do esquema do banco de dados, clique na seta verde no meio da tela:


Depois disso, a janela familiar para definir a sincronização de dados ou os esquemas do banco de dados será exibida, dependendo do que foi selecionado anteriormente.

Quest Software Solutions


As ferramentas ApexSQL Diff e ApexData Diff da Quest Software estão integradas no SSMS .
Além disso, essas ferramentas podem funcionar de forma independente e sem SSMS .
Visão geral detalhada das soluções de software da Quest

Sincronização de esquema de banco de dados


No menu principal, para iniciar a ferramenta, basta selecionar ApexSQL \ ApexSQL Diff \ Launch:


Na janela que aparece, clique no botão "Novo" abaixo:


A janela de opções de comparação do esquema do banco de dados é aberta. Agora você precisa preencher os campos obrigatórios na guia "Fontes de dados":


Preste atenção nas setas abaixo. Eles permitem que você troque as configurações da esquerda para a direita e da direita para a esquerda, bem como as configurações de cópia da esquerda para a direita e da direita para a esquerda. Em seguida, clique na guia "Opções" e selecione as configurações necessárias para comparar os esquemas do banco de dados (você não pode alterar nada):


Agora você precisa ir para a guia "Opções avançadas" e ver as configurações avançadas, que podem ser alteradas se necessário. A guia "Mapeamento de esquema" contém uma comparação de mapas para comparação:


Há também várias outras configurações avançadas:
  1. configurações avançadas da guia Filtro de objetos:
  2. configurações avançadas da guia "Pacote":
  3. configurações avançadas da guia Scripts adicionais:

No final, você precisa clicar no botão "Comparar" para iniciar o processo de comparação de esquemas de banco de dados. No final, uma janela aparecerá onde os objetos do esquema do banco de dados de origem estarão localizados à esquerda e os objetos do banco de dados receptor à direita:


Na parte inferior da janela, está o código de definição para o objeto selecionado, e as diferenças nos códigos de definição do mesmo objeto em diferentes bancos de dados são destacadas.

.
«Synchronize».

.
«Synchronization direction» .
, «Next»:


«Dependencies» :


«Output options» , :


«Summary and warnings» . «Create script»:


:


:


«View» .


«Resources» , . «Home». SSIS-:


:


:



ApexSQL\ApexSQL Data Diff\Launch:


“New”:


. «Data sources»:


. , .

«Options» ( ):


«Advanced options» , . , . «Object mapping»:


, .

«Compare» :


:


, , . , , — .

, . «Synchronize».

.

«Synchronization direction» .

, «Next»:


«Output options» , :


«Summary and warnings» . «Create script»:


:


, :


«View» .


«Resources» , .

«Home».

:


:


Soluções RedGate


Agora, veja como ferramentas SQL Compare e SQL Data Compare do RedGate .
Visão geral da solução RedGate


SQL Compare RedGate . «Data sources» :


, , , , -. :


«Table mapping» :


«Full» , , :


«Owner mapping» :


«Options» :


«Compare now» . «OK»:


, ( ApexSQL Diff) , :


, «Deploy»:
:


.

«Deployment method» .

«Next»:


, :



SQL Data Compare RedGate . «Data sources» :


, , , , -.

:


«Table & views» :


«columns» , , :


«Owner mapping» :


«Options» :


«Compare now» . «OK»:


, ( ApexSQL Data Diff) , :


, «Deploy»:


.

«Deployment method» .

«Next»:


, :


Comparação de preço e funcionalidade


Produto1 licença10 licençasAo comprar dois produtos ao mesmo tempo
Diferença do ApexSQL599 $359 $É feito pessoalmente e pode custar US $ 539 por dois produtos por licença para a compra de 10 licenças
Diferença de dados do ApexSQL599 $359 $É feito pessoalmente e pode custar US $ 539 por dois produtos por licença para a compra de 10 licenças
SQL Compare785 $785 $Pode ser fornecido pessoalmente, mas com a compra de mais de 10 licenças
Comparação de dados SQL785 $785 $Pode ser fornecido pessoalmente, mas com a compra de mais de 10 licenças
Esquema dbForge Compare para SQL Server300 $300 $US $ 400 para dois produtos por uma licença
dbForge Data Compare para SQL Server300 $300 $US $ 400 para dois produtos por uma licença

Também é importante notar a seguinte funcionalidade das ferramentas discutidas acima:
  1. a fonte para comparação pode ser:
    • um banco de dados
    • instantâneo
    • pasta de script
    • backup
    • sistema de controle de versão
  2. você pode trabalhar com essas ferramentas através da linha de comando
  3. a sincronização pode ser realizada diretamente ou um script de sincronização pode ser salvo para execução posterior. Você também pode salvar como um arquivo bat

O site oficial da ferramenta ApexSQL Diff fornece uma comparação desse programa com a ferramenta SQL Compare.

Da mesma forma, para a ferramenta ApexSQL Data Diff , é fornecida uma comparação com a ferramenta SQL Data Compare.

A partir das comparações acima, é fácil ver que há algo no ApexSQL, que não está no Compare, e algo ao contrário está no Compare, mas não no ApexSQL. Mas todos os utilitários considerados têm o conjunto necessário de funcionalidade básica para comparar os esquemas e os próprios dados do banco de dados.

Em termos de funcionalidade e preço, levando em consideração os descontos e o material discutido acima, os produtos ApexSQL Diff e ApexSQL Data Diff são a melhor escolha.

Conclusão


Utilitários populares para sincronizar esquemas e dados do banco de dados foram considerados:
  1. Esquema dbForge Compare para SQL Server por Devart
  2. Comparação de dados do dbForge para SQL Server da Devart
  3. Quest Software ApexSQL Diff
  4. Diferença de dados ApexSQL da Quest Software
  5. RedGate SQL Compare
  6. RedGate SQL Data Compare


Também foi feita uma breve comparação sobre o preço e a funcionalidade desses produtos.

O resultado da revisão foi a conclusão de que a melhor escolha em preço e funcionalidade são ApexSQL Diff e ApexSQL Data Diff da Quest Software. No entanto, a funcionalidade básica necessária está suficientemente disponível nos produtos Devart: dbForge Schema Compare para SQL Server e dbForge Data Compare para SQL Server. Esses produtos podem ser comprados muito mais baratos que seus equivalentes ApexSQL Diff e ApexSQL Data Diff da Quest Software.

Existem soluções semelhantes para o Oracle DBMS.

E quais comparadores ajudam e para quais DBMSs para comparar esquemas e dados do banco de dados?

Após discussões


Além disso, os colegas nos comentários e na correspondência recomendaram os seguintes comparadores interessantes:
  1. para comparar esquemas e dados do banco de dados de diferentes DBMS
  2. Para migrar do MS SQL Server para o PostgreSQL:
  3. para comparar esquemas de banco de dados e dados do banco de dados para o MS SQL Server
  4. para alternar de um DBMS para outro DBMS e para comparar esquemas e dados do banco de dados de diferentes DBMSs . A ferramenta simétrica também é muito boa.
  5. para transferir um banco de dados Jira do MS SQL Server DBMS para o PostgreSQL DBMS


Fontes


Source: https://habr.com/ru/post/pt465753/


All Articles