私はこれについて多くの経験を持っています。私のアプリケーションは反復性が高く、スキーマの変更が頻繁に発生します。私はおよそ 2 週間から 3 週間ごとに製品版のリリースを行っており、それぞれの項目について、FogBugz リストから 50 から 100 の項目をクリアしています。過去数年間に行ったすべてのリリースでは、新機能をサポートするためにスキーマの変更が必要でした。
これの鍵は、ライブサーバーで実際に変更を行う前に、テスト環境で変更を数回練習することです。
私は、テンプレートからコピーされたデプロイ チェックリスト ファイルを保持しており、リリースごとに通常とは異なる部分を大幅に編集しています。
データベースで実行するスクリプトは 2 つあります。1 つはスキーマの変更用、もう 1 つはプログラミング (プロシージャ、ビューなど) 用です。変更スクリプトは手作業でコーディングされており、procs を含むスクリプトは Powershell を介してスクリプト化されています。変更スクリプトは、すべてがオフになったときに実行され (これを実行するユーザーの数が最も少ない時間を選択する必要があります)、異常が発生した場合に備えて、コマンドごとに手動で実行されます。私が遭遇した最も一般的な問題は、重複行のために失敗する一意の制約を追加することです。
統合テスト サイクルの準備をするときは、テスト サーバーでチェックリストを調べます。そのサーバーが運用環境であるかのように。次に、それに加えて、実稼働データベースの実際のコピーを取得し (これは、オフサイト バックアップを交換する良い機会です)、復元されたローカル バージョンでスクリプトを実行します (これも、私の最新のバックアップは健全です)。ここでは一石二鳥です。
つまり、合計 4 つのデータベースです。
- 開発者: すべての変更は変更スクリプトで行う必要があり、Studio を使用することはありません。
- テスト: 統合テストはここで行われます
- 実動のコピー: 最後の展開の練習
- 製造
本番環境で行うときは、本当に、本当に正しく行う必要があります。スキーマの変更を取り消すのは困難です。
ホットフィックスに関しては、非常に孤立した変更であり、ビジネスにとって重要でない限り、ホットフィックス手順のみを行い、スキーマは決して行いません。