10

Visual Studio 2010のデータベースプロジェクトを使用して、データベースを展開するためのスクリプトを生成しています(そしてそれは変更されています)。これはうまくいきます。

Visual Studioデータベースプロジェクトに、展開スクリプトだけでなくロールバックスクリプトも生成させる方法はありますか?

デプロイ中にトランザクションをロールバックすることは考えていません。しかし、それをデプロイし、ストアドプロシージャに、前のバージョンのデータベースへのロールバックを必要とする1週間後に発生する見落とされたパフォーマンスの問題があるとします。

ビルド/デプロイ時にロールバックスクリプトを生成して、デプロイメントスクリプトが行った変更を元に戻す方法はありますか?

編集:データベースプロジェクトを使用していることを無視した場合:データベースのアップグレードパスとダウングレードパスを生成するための良い方法は何ですか?
この世代は、自動ビルドプロセスの一部である必要があります。

4

3 に答える 3

6

ロールバック スクリプトを作成するには VS2010 を使用してスキーマ比較を行いますが、ソースとターゲットで指定された db 名を交換するのと同じくらい簡単です。

このようにして、VS2010 は、ストアド プロシージャに対する drop ステートメントを持つロールバック スクリプトを作成します。

于 2011-06-15T14:32:21.010 に答える
0

私はそのようなものを見たことがありません。

データベース プロジェクトでストアド プロシージャを修正する必要があるため、このアプローチを再検討する必要があると思います。そうしないと、次にデプロイするときに「悪い」バージョンを再デプロイすることになります。(あなたはすでにそれを認識していると思いますが、時々明白なことを指摘しても役に立ちません!)

それまでの間、古いバージョンの sproc をサーバーに復元する必要がある場合、ソース管理から以前のバージョンを取得して手動で展開するのが最も簡単な方法だと思いました。

于 2011-04-04T15:30:56.687 に答える
-1

リリース前にデータベースのバックアップを作成し、問題が発生した場合にバックアップから復元することができます。明らかに、バックアップが作成されてからのデータ変更 (リリースの一部として、またはその後に行われたもの) も失われます。

もう 1 つのアイデアは、リリース前にスナップショットを作成することでした。スナップショットを作成する操作は非常に軽量です。スナップショットを 1 週間保持するかどうかはわかりませんが、リリースに失敗した場合は、フル バックアップから復元するよりもスナップショットから復元する方が速いと思います。このアイデアについて人々のコメントを聞きたいです。

于 2011-12-21T16:01:47.037 に答える