0

共有ホスティングサーバー上にライブデータベースがあります。私は自分のサイトのコードにいくつかの大きな変更を加えています。私は最初にデータベースを設計する際に愚かな間違いを修正したいと思います。これらの変更には、多数のフィールドのサイズを変更し、テーブル間の参照整合性を適切に実施する必要があります。可能であれば、ローカルのテストサーバーとリモートサーバーの両方で変更を加えたいと思います。共有ホスティングでのSQLデータベースの変更

私は、データを処理するために複雑なクエリを書くとかなり快適だが、私はグラフィカルインターフェイスなしでデータベース構造を変更することはほとんど経験を持っていることに注意してください。

私は、Visual Studioのデータベースエクスプローラで、リモート・データベースにアクセスすることができますが、私はデータ操作以外の何のためにそれを使用することはできません。私は昨晩、Sql Management Studio Expressをインストールしました。私があきらめた40回以上のクラッシュの後に、私は気になるものにパッチを当てることもできませんでした。

リモートサーバがSQL 2005で/ MyLittleAdminのWebインタフェースが提供されています。 私の質問は、これらの変更を達成するための最良の方法です。リモートサーバーで使用できるグラフィカルインターフェイスはありますか?そうでない場合は、ローカルマシンにデータベースをコピーして修正してアップロードする簡単な方法はありますか?最後に、上記のどれも実行可能でない場合、誰かがクエリを介して参照整合性を修正するためのまともな情報へのリンクを持っていますか?

やや一般的な質問申し訳ありません - 私はそれがあるべきよりも、これははるかに困難になっていますように感じるが、私はどこにももらっていないすべての夜をしよう/検索後。助けを前にありがとう。ほんとうにありがとう。

...また、誰もが私がborrow-できるタイムマシンを持っていない私は、このための私の過去の自己の尻を蹴りに行く必要があります。

+0

まあ、現在のデータベースを複製し、最初に別の変更をテストすることをお勧めします。 タイムマシンに関しては、theresは常にhttp://en.wikipedia.org/how_to_build_a_time_machine –

+0

そのリンクは削除されたウィキペディアのページに移動します。 –

答えて

2

通常、ホスティングプロバイダはデータベースのバックアップと復元を可能にするため、最も簡単な方法は、稼働中のDBをバックアップし、バックアップファイルをダウンロードし、ローカルに復元し、すべての変更を行い、ローカルDBにアップロードしてライブサービスで復元します。この時間に管理シャットダウンを実行すると、この操作を実行している間はデータの更新が継続されません。ローカルのSQLインスタンスがホスティングプロバイダと同じビルドバージョン(@@バージョン)になっていることを確認する必要があります。そうしないと、ローカルSQLがデータベース構造をアップグレードし、ホスティングプロバイダに戻すことができなくなりますあなたのバージョンがホストのバージョンよりも前のものであれば、あなたのローカルサーバでリストアすることができなくなります)。 MSDN BOLには、Copy Databases using Backup/Restoreの詳細なガイドがあります。

代替バックアップに/復元はdetach/attachにデータベースですが、同期してMDFとLDFの両方を移動する必要があるので、私はこれをお勧めしません、そして、彼らはまた、バックアップよりもサイズが大きいです。

これは、あなたがwizardly方法でローカルコピー上のすべてのスキーマの変更、すなわちを行うことができますを前提としています。迅速かつ正確。もちろん、それは簡単ではありません。推奨される方法は、新しいスキーマに到達するために必要なすべての変換を適用するスクリプトを時間内に準備することです。 SQL Diff,SQL CompareSQL Deltaなどのツールがあり、このようなスクリプトを生成することができます。また、Visual Studio Database Editionもこれを実行できます。

  1. 私は、ライブホスト上のように私のdevのマシン上でまったく同じスキーマを持っていることを確認:私は、これはこのようになるだろうどのように

    。わからない場合は、ライブサーバーのバックアップを取り、ローカルに復元することができます。これは私のリファレンス、v1になります。スキーマ

  2. v1のバックアップを保持します。参照用
  3. スキーマをターゲットに変更するスクリプトの開発を開始します。時々私は自分自身のスクリプトの構文で自分の記憶をリフレッシュする必要があります。私がやることは、私がやりたい操作のためにSQL Server Management Studioウィザードに行き、UIのすべてのオプションを選択してから、 SSMSが望んでいる変更を達成するために実行しているスクリプトを正確に表示します。
  4. スクリプトに追加する変更ごとに、v1を復元することでテストできます。参照バックアップ私はステップ1からスクリプトを実行しています。
  5. 必要なスキーマの変更がすべて完了するまで、一度に1つの変更を追加して、スクリプトを繰り返し実行します。変更するたびに、手順4のように再度テストすることができます。
  6. Yourscriptはスキーマに対するDDL変更だけでなく、参照データの変更、値の変更、タブ間の列の移動など、必要なDML変更も行う必要があります。
  7. スクリプトが準備完了したら、新しいバックアップをダウンロードしてスクリプトを適用し、更新されたバックアップをアップロードしてライブホストに復元できます。代わりに、ライブホストでスクリプトを実行するだけでもかまいません(何かがひどく間違っている場合に備えてバックアップした後に)。

私のプロジェクトでは、常にスクリプトを使用してデータベースを展開してアップグレードしています。実際には、データベースの拡張プロパティを使用して、アプリケーションデプロイメントされたスキーマの 'バージョン'を保存しています。コードでは、スキーマを最後のバージョンに移動するすべてのスクリプトをロールフォワードします。私はこのテクニックを説明しているブログの記事を持っています:Version Control and your Database

+0

ありがとうございました!これはまさに私が必要としていたものです。 –

関連する問題