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、手動メソッドなど)では、この場合、自分で変更テーブルを作成し、スクリプトを正しい順序で実行する必要があります。このシナリオを検討してください。
- リリース1-テーブルに列helloを作成する
- リリース2-hello列の名前をjoe_blogsに変更
- リリース3-列の名前をjoe_blogsからhelloに変更
- リリース4-列joe_blogsを作成する
リリースのいずれかを逃した場合、次のリリースは続行できません。
アップグレードスクリプトの利点(Liquibase、DbUpなど):
- スクリプトを完全に制御できます
- DBA /開発者はこれに慣れています
比較/マージの利点(SSDT、Redgate SQL Compare):
- アップグレードスクリプトを記述する必要はありません
- 特定のバージョンにアクセスするのは簡単です。そのバージョンを比較してマージするだけです。
アップグレードスクリプトの欠点:
- 順番に実行する必要があります
- ミスを犯さずに人間に依存する
- 特に変更が多い場合は遅くなる可能性があります
- チームが非常に規律のあるデータベースでない限り、さまざまな環境(開発、テスト、ステージング、製品など)で同期が取れなくなることが多く、テストが無効になります。
- リリースのダウングレードとは、すでに書いたすべてのスクリプトの逆を書くことを意味します
比較/マージを使用することの欠点:
- ツールは100%信頼されていない、おそらく不公平
- SSDTには作業プロジェクトが必要です。多くのデータベースには、実際にコンパイルまたは実行されないコードがあります(ドロップされたテーブルではなくプロシージャなど)。これは、継承した約8/10のデータベースで確認されています。
- 多くのDBA /開発者は、SSMS /メモ帳での開発をあきらめることをためらっています
個人的には、私はSSDTがプロの開発環境だと本当に思っています。つまり、それ自体が目的に過ぎないアップグレードスクリプトを書くのではなく、有用なコードとテストを書くことに集中できるということです。
あなたはそこに行くので、あなたは意見を求めました:)
ed