2013-07-23 15 views
6

私はSQL Serverデータベースツールを初めて使用しているので、インストール後スクリプトが何をしているのかについて間違った前提がある可能性があります。ssdt post deployment script once once実行する

私の知る限り、導入後のスクリプトは、導入後に1回の導入だけでなく実行されることが予想されます。

ポストデプロイメントスクリプトにスクリプトを一度だけ実行させるには、これらのスクリプトがすでに実行されたときにログに記録するデータベースにバージョンテーブルまたは履歴テーブルを必要としないでこれを行う方法がありますか?

I.e.私はスクリプトの後続の修正をプロジェクト内の新しいファイルとしてバージョン番号をつけて追加し、それを投稿展開スクリプトに追加することはできますか?展開中にスクリプトをまだ実行しているかどうかは関係ありませんか?

この種の設定はありますか?またはこの意図しない動作ですか?

答えて

8

プロジェクトのリリース前およびリリース後のスクリプトは、プロジェクトをリリースするたびに実行されるように設計されています。あなたのベストプラクティスは、それらを繰り返し可能にすることです。チェックが追加され、データがすでに存在する場合は、再度実行したり、類似のものを実行したりしないようにします。これを格納するための基本的なロギングテーブルを構築することもできます。行がテーブルにない場合は、スクリプトを実行してテーブルに行を配置します。

大規模なPreDeploy.sqlファイルまたはPostDeploy.sqlファイルに1つのスクリプトが組み込まれているため、複数のスクリプトが存在する場合は、最新のバージョンのスクリプトのみを実行するようプロジェクトに指示することはできません。実行するかどうかを知るための場所を教えてくれる、各セクション/スクリプト内に何かが必要です。これは、既存のデータチェック、テーブルチェック、バージョンチェック、またはその他のものですが、実行するかどうかを知るために何を使用するかを知る必要があります。

スクリプトをコメントアウトしたり、SQLCMD変数やその他のチェックによって何らかの方法で処理する以外に、これをオフにする方法はありません。これらのスクリプトでは、各スクリプトの実行方法をコーディングする必要があります。 Pre/Post Deployスクリプトで達成しようとしていることの例を2つ挙げると、より良いガイダンスが得られる可能性があります。

私たちの目的のために、私たちはスクリプトを再利用可能にして、実行したとおりに削除します。それらはまだソース管理されているか、スナップショットを使用してそのバージョンのプロジェクトを保存してから削除することができます。

+0

あなたの答えは私が期待していたもので、SSDTが「一度実行」のための設定をしているかもしれないと思っていましたが、それ自体の答えを知ることはできません。 – Pricey

+1

私はそのような構成を知らない。どのようにプロジェクトは、何らかのテーブルや他のやり方で作業を参照することなく、データベース上で「一度実行」されたことをどのように知っていますか? –