これは馬鹿げた質問のように思えるかもしれませんが、私はスキーマ移行のためのオープンソースソリューション、つまりLiquibaseとFlywayを検討してきました。
ただし、上司から、SQL Serverデータツール(SSDT)でも同じことができると言われました。同意するかどうかはわかりませんが、インターネットでLiquibaseやFlywayと直接比較するものはほとんどありません。
SSDTはSQL Serverの開発、データモデリング、および設計ツールであり、スキーマ比較(およびそのスクリプトの生成)とソース管理もサポートしていると私は考えています。スキーマ移行のいくつかの側面でLiquibase/Flywayと一部重複する可能性がありますが、別の問題に取り組みます。しかし、全体的なスキーマ移行ツールとして、LiquibaseとFlywayは完全に専用のツールですが、SSDTはデータベースの設計と開発に適しています。
比較がないと言うだけでSSDD自体はスキーマ移行ツールではないとしても、どんな意見でも大歓迎です。
SSDTはLiquibase/Flywayに匹敵します。Liquibase/ Flywayが行うことは同じですが、別のアプローチをとっています。 SSDTには開発環境があり、定義に移動したり、参照やインテリセンスを見つけたり、プロジェクトをdacpacにコンパイルしたり、そのdacpacをデータベースに展開したりできます。
SSDTの方法(およびredgate sql compareの方法)でデロイメントを行う方法は、次のようなテーブルを変更する場合に必要なものを宣言することです。
create table a(id int)
次のようなテーブルに:
create table a(id int, another_column varchar(12))
sSDTを使用すると、テーブル定義を2番目の定義に変更し、それをSSDTにアップグレードする方法を心配させることができます(テーブルの変更、列の追加、または列の順序の変更を行うことができるため、テーブルを再構築する必要があります)。
Liquibase(DbUp、ReadyRoll、手動メソッドなど)では、この場合、自分で変更テーブルを作成し、スクリプトを正しい順序で実行する必要があります。このシナリオを検討してください。
リリースのいずれかを逃した場合、次のリリースは続行できません。
アップグレードスクリプトの利点(Liquibase、DbUpなど):
比較/マージの利点(SSDT、Redgate SQL Compare):
アップグレードスクリプトの欠点:
比較/マージの使用の欠点:
個人的に私はSSDTはプロの開発環境だと思います。つまり、それ自体が目的に過ぎないアップグレードスクリプトを書くのではなく、有用なコードとテストを書くことに集中できるということです。
あなたは意見を求めたので、そこに行きます:)
ed
私は予備の回答を補充するだけです。
中心的な場所のFlyway Webサイトで説明されている最大の違い:
1つの問題だけを解決し、それをうまく解決します。 Flywayはデータベースを移行するため、もう心配する必要はありません。
Visual Studio + SSDT + SSIS =フルパワーETLツール、実際の欠点は1つだけ-Windowsでしか機能しない実行パッケージにはWindows + SQL Serverが必要ですが、ほとんどすべてのソースで機能します。
データの転送/移行-市場に出回っている多くの製品。商用、オープンソース、コミュニティ/エクスプレスなど
移行コードの場合-すべてはそれほど良くありません。ソフトウェアが「トリガー、プロシージャ、関数を問題なく変換する」と約束したとしても、実際には-シンプルでほとんどのコードの移行のみ-手動です。
私はSqlサーバーデータツールとflywayの両方を使用しました。 SSDTを使用すると、次の利点があります。
ビルドが成功すると、SSDTは「DACPAC」と呼ばれるものを生成します。これをバージョン付きのmsiと考えてください。
たとえばバージョン5の特定のdacpacは、Dacpacバージョン1、2、3、4または6、7、8などのデータベースに適用できます。1〜4に適用すると、データベースがアップグレードされます。 6,7などに適用した場合、DBはダウングレード/ロールバックされます。データが失われると警告が表示され、抑制できます。そのため、flywayなどの他のツールでは使用できない優れたロールバック機能が得られます。flywayでは、ロールバック用の新しいスクリプトセットを提供する必要があります。
DACPACはすべての変更を1つのトランザクションで適用します。つまり、アップグレードで5つのテーブル変更があり、そのうちの1つが失敗した場合、トランザクション全体がロールバックされます。 Flywayもこれをサポートしますが、すべてのファイルに対してです。
ただし、SSDTとDACPACはMicrosoft SQL Server固有です。 flywayは、さまざまなデータベースに使用できます。
つまり、SQL Serverのみを使用している場合、SSDTとDACPACを使用するのはかなり簡単な決定です。