0

リリース バージョン間でデータベース コードをバージョン管理する方法として、VS2010 データベース プロジェクトを使用しています。これまでのところ、提供されたソリューションは良いようです。ただし、他の誰かが遭遇したのではないかと思う問題が 1 つあります。

スキーマ比較ビューから生成されたアップグレード スクリプトは再実行できません。標準として、リリース スクリプトをサーバーにデプロイする際に問題が発生した場合に備えて、通常はすべてのデータベース リリース スクリプトが再実行可能であることを確認します。

再実行可能なアップグレード スクリプトを作成するように VS2010 を構成する方法があるかどうか、つまり、存在する場合にのみ sprocs をドロップする方法があるかどうかは誰にもわかりませんか?

4

4 に答える 4

0

vsdbcmd の欠点は、テーブルに NULL 不可の列を追加するために頭を飛び越えなければならないことです。特にそこに大量のデータがある場合。

于 2012-06-14T08:21:06.170 に答える
0

スキーマの比較を行い、データベース プロジェクト モデルをデータベースと同期したら、それを構築して、データベースの .dbschema ファイルを取得できます。

これを vsdbcmd で使用して変更スクリプトを作成し、以前のバージョンの DB をアップグレードして .dbschema ファイルで定義されたバージョンに一致させることができます。これにより、再実行可能なアップグレード スクリプトが提供されます。さらに、失敗した場合は、失敗した理由が示され、ターゲット DB への変更は行われません。ただし、同じデータベース バージョンから同じデータベース バージョンに移行する場合にのみ再利用できます。

(redgate sql 比較生成スクリプトから) データベース プロジェクトに移行した主な理由の 1 つは、この問題を回避することでした。すべてのアップグレード スクリプトは、特定のバージョンから特定のバージョンへのものでした。DB プロジェクトの主な利点の 1 つは、再実行可能なスクリプトを用意する必要がないことです。ターゲットがどのように終了するかを定義する .dbschema ファイルがあり、VSDBCMD にすべての作業を任せます。スクリプトを生成することさえしない傾向があり、VSDBCMD を使用してデータベースを直接更新します。

このルートを下る場合http://blogs.msdn.com/b/bahill/archive/2009/02/21/deploying-your-database-project-without-vstsdb-installed.aspxには前提条件のリストがあります開発環境の外で VSDBCMD を実行する必要があります。

于 2011-06-10T12:47:12.617 に答える
0

RedGate の Sql Packagerをチェックするかもしれません

于 2011-05-16T18:52:43.130 に答える
0

Visual Studio 2015 (および場合によってはそれ以前のバージョン) では、発行スクリプトを設定して、エラー処理を伴う単一のトランザクションを含めることができます。下記参照:

「トランザクション スクリプトを含める」を使用した SSDT 発行

通常のスクリプトをより大きなトランザクションにラップすることは、私にとってはうまくいきません。なぜなら、このスクリプトは、Visual Studio プロジェクト内で利用できる配置前/配置後スクリプトの外部で sqlcmd エラー処理を導入するからです。

:on error exit

これにより、try-catch を使用してエラーを効果的に処理することができなくなり、トランザクションを手動でロールバックする必要が生じます。

注: デプロイ前/デプロイ後のスクリプトは、[トランザクション スクリプトを含める] 設定によって生成されたトランザクションの外部で実行されるため、これらを自分で管理する必要があります。

于 2016-04-29T09:30:11.440 に答える