DBを自動的に更新する代わりに、生産環境のための流暢なノヒサ中のSQLスクリプトを生成する
-
24-12-2019 - |
質問
私はこれに対処するものを見つけていませんが、さまざまなドキュメントを見た将来のプロジェクトのために将来のプロジェクトのためにFluentMigratorを使用しているのを見ていますが、ステージング/製造方法はDBAを介してスキーマの更新をしなければなりません。テスト、Dev、およびLocalなどの他の環境に最適なことをしています。
とにかく変更をするためにスクリプトを書く必要がある場合、ツールの目的は完全に敗北しています。しかし、それは私に発生しました、私がいなかったらどうしたのですか?だから私の質問はこれです。実際にトランザクションを実行するのではなく、ファイルへのSQLスクリプトをファイルにスピットさせることは可能ですか?
メインプロジェクトと同じDALアセンブリを使用しているコンソールアプリを作成し、マイグレータロジックを活用して、コンソールアプリを実行するたびに、それはスクラッチからDBを更新する、または最も近い点から更新される。私の選択について。私たちはTeamCityを使いますので、それがアプリを実行して(私自身のDBAのビルドプロセスのビルドプロセスの中のフォルダとして(アーティファクトとして)スクリプトを自分のDBAを更新することができます。
解決
FluentMigratorコマンドラインランナーはSQLスクリプトを生成します。データベースに変更を適用せずに:
-
--preview=true
-
--output=true
-
--outputFilename=output1.sql
と、 fluentMigrator.toolsパッケージをインストールした場合href="https://www.nuget.org/packages/fluentmigrator/" rel="nofollow"> FluentMigratorパッケージ、移行プロジェクトのビルド出力ディレクトリからコマンドラインランナーにアクセスできるようになります(Migrate.exe
)
注: 生成されたスクリプトにはFluentMigratorバージョンテーブルに挿入が含まれます。
他のヒント
After reading Command Line Runner Options I'd use --verbose=true to output the sql script and --output to save it to a file. There seems to be no 'dry run' option however - you'll need to run the migration in some preproduction environment to obtain the script.
Give it a shot as I've admittedly never tried it.