Isso pode parecer uma pergunta estúpida, mas tenho procurado soluções de código aberto para migração de esquema, ou seja, Liquibase e Flyway.
No entanto, meu chefe me disse que o SQL Server Data Tools (SSDT) realiza o mesmo trabalho. Não tenho certeza se concordo, mas posso encontrar muito pouco na Internet que o compare diretamente ao Liquibase e/ou Flyway.
Minha opinião é que o SSDT é uma ferramenta de desenvolvimento, modelagem de dados e design para SQL Server e também suporta comparação de esquemas (e geração de scripts dos mesmos) e controle de origem. Ele aborda um problema diferente, embora possa haver alguma sobreposição com o Liquibase/Flyway em alguns aspectos da migração de esquema. Mas, como uma ferramenta geral de migração de esquema, o Liquibase e o Flyway são ferramentas totalmente dedicadas, enquanto o SSDT é mais para o design e desenvolvimento de um banco de dados.
Qualquer opinião seria muito apreciada, mesmo que seja apenas para dizer que não há comparação e o SSDT não é uma ferramenta de migração de esquema em si.
O SSDT é comparável ao Liquibase/Flyway, pois faz o que eles fazem, mas adotando uma abordagem diferente. Com o SSDT, você tem o ambiente de desenvolvimento para obter coisas como ir para a definição, encontrar referências e inteligência, bem como a capacidade de compilar um projeto em um dacpac e, em seguida, implantar esse dacpac em um banco de dados.
A maneira SSDT (e a maneira redgate sql compare) de fazer uma implantação é declarar o que você deseja, portanto, se quiser alterar uma tabela que se parece com:
para uma tabela que se parece com:
com o SSDT, basta alterar a definição da tabela para a segunda e deixar o SSDT se preocupar em como atualizá-lo (ele pode alterar a tabela, adicionar coluna ou alterar a ordem da coluna, portanto, será necessário reconstruir a tabela, etc.).
Com o Liquibase (DbUp, ReadyRoll, métodos manuais, etc.), o que você faz é, neste caso, escrever a tabela alter você mesmo e certificar-se de executar os scripts na ordem correta, considere este cenário:
Se algum dos lançamentos for perdido, nenhum dos próximos poderá continuar.
Benefícios dos scripts de atualização (Liquibase, DbUp, etc):
Benefícios da comparação/mesclagem (SSDT, Redgate SQL Compare):
Desvantagens dos scripts de atualização:
Desvantagens de usar comparar / mesclar:
Pessoalmente, acho que o SSDT é um ambiente de desenvolvimento profissional e isso significa que posso me concentrar em escrever códigos e testes úteis, em vez de escrever scripts de atualização que são apenas um meio para atingir um fim.
Você pediu opiniões, então vamos lá :)
ed
Acabei de completar a resposta de previsão.
A maior diferença descrita no site da Flyway no local central:
Visual Studio + SSDT + SSIS = ferramenta ETL de potência total, com apenas uma desvantagem real - funciona apenas no Windows Ele precisa do Windows + SQL Server para executar pacotes, mas funciona principalmente com todas as fontes.
Para transferir/migrar dados - muitos produtos no mercado. Comercial, Open Sources, Community/Express e etc
Para migrar código - nem tudo é tão bom. Mesmo que o software prometa "converter gatilhos, procedimentos e funções sem problemas", na verdade - apenas simples, a maioria das migrações de código - manual.
Trabalhei com ferramentas de dados do servidor SQL e flyway. Usando o SSDT, obtenho as seguintes vantagens:
Após a compilação bem-sucedida, o SSDT gera o que é conhecido como "DACPAC". Pense nisso um msi com uma versão.
Um determinado dacpac, digamos com a versão 5, pode ser aplicado a um banco de dados que está na versão Dacpac 1,2,3,4 ou 6,7,8 etc. Se for aplicado a 1-4, o banco de dados será atualizado. Se aplicado a 6,7 etc., o banco de dados será rebaixado/revertido. Haverá avisos, se houver perda de dados, que podem ser suprimidos. Portanto, obtemos um ótimo recurso de reversão, que não está disponível com outras ferramentas, como flyway, etc. Com o flyway, é necessário fornecer um novo conjunto de scripts para reversão.
DACPAC aplica todas as alterações em uma transação; ou seja, se houver 5 alterações de tabela na atualização e uma delas falhar, toda a transação será revertida. Flyway suporta isso também, mas para cada arquivo.
No entanto, SSDT e DACPACs são específicos do Microsoft SQL Server; flyway pode ser usado para uma variedade de bancos de dados.
Portanto, se você estiver usando apenas o SQL Server, deve ser uma decisão bastante fácil usar SSDT e DACPACs.