私は、既存の小さなプロジェクトに 2012 データベース プロジェクトを採用しようとしている研究段階にあります。私は C# 開発者であり、DBA ではないため、ベスト プラクティスについては特に詳しくありません。私は数時間グーグルとスタックオーバーフローを検索してきましたが、いくつかの重要な展開シナリオを適切に処理する方法がまだわかりません.
1) いくつかの開発サイクルの過程で、データベースの複数のバージョンをどのように管理しますか? データベースの v3 にクライアントがあり、それらを v8 にアップグレードしたい場合、どうすればこれを管理できますか? 私たちは現在、製品のすべてのバージョンについて、手作りのスキーマとデータ移行スクリプトを管理しています。これを個別に行う必要がありますか、それとも新しいパラダイムにこれをサポートまたは置き換えるものがありますか?
2) データを移動する必要があるような方法でスキーマが変更された場合、これを処理する最善の方法は何ですか? データを保存するために配置前スクリプトで何らかの作業が行われ、配置後スクリプトがデータを適切な場所に戻すと仮定します。それがその方法ですか、それとももっと良いものがありますか?
3) これらの新しいテクノロジをどのように使用するのが最善かについて、その他のアドバイスやガイダンスも大歓迎です!
更新:最初にこの質問をして以来、問題に対する理解が少し深まりました。実行可能な解決策を思いついたものの、それは私が望んでいた解決策ではありませんでした。これが私の問題の言い換えです:
私が抱えている問題は、純粋にデータ関連です。アプリケーションのバージョン 1 を使用しているクライアントをアプリケーションのバージョン 5 にアップグレードしたい場合、データベースにデータがなくても問題はありません。SSDT にインテリジェントにスキーマを比較させ、データベースを 1 回で移行させるだけです。残念ながら、クライアントにはデータがあるため、それほど単純ではありません。アプリケーションのバージョン 1 からバージョン 2、バージョン 3 (など) へのスキーマの変更はすべてデータに影響します。現在のデータ管理戦略では、バージョン アップグレード (1 から 2、2 から 3 など) ごとにスクリプトを維持する必要があります。これにより、アプリケーションのバージョン 1 からバージョン 5 に直接移行することができなくなります。そこに直接移行するためのデータ移行スクリプトがないためです。クライアントごとにカスタム アップグレード スクリプトを作成したり、アップグレード スクリプトを管理してすべてのバージョンからすべての上位バージョンに移行したりすることは、指数関数的に困難です。私が望んでいたのは、SSDT が可能にするある種の戦略があり、それによって物事のデータ側をより簡単に、おそらくスキーマ側と同じくらい簡単に管理できるようになることでした。私の最近の SSDT の経験では、そのような戦略が存在するという希望はありませんでしたが、別の方法で見つけたいと思っています。