1

私はたくさんグーグルで調べてきましたが、これが存在するかどうか、または魔法を求めているかどうかを見つけることができませんでした = P

よし、これで取り引きだ。

スキーマ、構造、テーブル、ストア プロシージャ、udfs など、SQL SERVER 2005 の実際のデータ以外のすべてを含む "マスター構造化" データベースを作成する方法が必要です (2008 年にこれが利用可能である場合は、クライアントにお金を払ってもらうよう説得することもできます = P)

次に、それらのスキーマ、テーブルなどを実装するそのマスターデータベースのいくつかの「子」が必要ですが、それぞれに異なるデータがあります。

そのため、新しいストアド プロシージャなどを作成する必要がある場合は、master データベースに作成します (もちろん、その子でも利用できます)。

実際、同じスキーマと異なるデータを持ついくつかの異なるデータベースがあります。しかし、問題はそれらの間の一致を維持することです。SP を作成したり、インデックスなどを追加したりするスクリプトを作成するたびに、すべてのデータベースでスクリプトを実行する必要があります。

したがって、UNIVERSE (マスター データベース) があり、ユニバースに SPACE (それぞれが子データベースによって表される) があるとします。したがって、私が取り組んでいるアプリケーションでは、SPACES を動的に「複製」する必要があります。そのためには、新しいデータベースを作成する必要があります。現在、クローンされているデータベースのバックアップを作成し、それを新しいものとして復元し、テーブルを切り捨てています。「マスター」データベースの新しい「子」を作成できるようにしたいのですが、これはスキーマとすべてを維持しますが、空のデータから始まります。

それが明確であることを願っています... 私の英語は完璧ではありません、それについて申し訳ありません= P みんなに感謝します!

4

6 に答える 6

2

本当に必要なのは、データベース スキーマのバージョン管理です。

do-you-source-control-your-databases を参照してください

SQL Server を使用している場合は、dbGhostをお勧めします。高価ではなく、次の点で優れています。

  • 2 つのデータベースの同期
  • 2 つのデータベースの比較
  • 一連のスクリプトからデータベースを作成します (このバージョンをお勧めします)。
  • バッチのサポートにより、単一のバッチを使用してすべてのデータベースをアップグレードできます

このインフラストラクチャは、次の両方に使用できます。

  • テスト、統合、および本番システムへの開発バージョンのローリング
  • 「更新された」システムを複数の実稼働展開に展開する (特にホスト環境で)
于 2009-06-03T20:50:29.273 に答える
1

変更をSQLファイルとして書き込み、バッチファイルを介してOSQLまたはSQLCMDを使用して、すべてのデータベースでそれについて考えずに繰り返し実行するようにします。

別の方法として、VisualStudio DatabaseProツールまたはRedGateSQL比較ツールを使用して、変更を比較および伝達します。

于 2009-06-03T20:32:08.530 に答える
1

コツはありますが、これを処理する主流の方法は、依然としてソース コード管理を使用することです (その他すべての利点があります)。また、SQL Server はますます SCC フレンドリーになっています。

また、多くの (最も堅牢な) サイトでは、サーバーごとの問題であり、データベースごとの問題でもあります。

于 2009-06-03T20:35:11.600 に答える
0

SPのようなマスターに入れて、どこからでも呼び出すことができます。テーブルのような他のオブジェクトに関しては、それらをモデルに入れることができ、新しいデータベースを作成すると、新しいデータベースがそれらを取得します

ただし、親に追加された後、新しいテーブルを子データベースに単純にポップアップさせるためには、何もしません。

データベースを調べてテンプレートデータベースからスクリプトを作成するための何かを作成することは可能です。また、データベース間の違いを発見するのに役立つ商用ツールもあります。また、「マスター」データベースにDDLトリガーを設定して、新しいテーブルを作成したときにこれを実行することもできます。

優れたSPACESテンプレートを保持している場合は、それを(データなしで)スクリプト化して新しいデータベースを作成できます。したがって、切り捨てる必要はありません。SQLまたは外部ツールからスクリプトを作成できます。

于 2009-06-03T20:30:31.233 に答える
0

ここでちょっとした雑学。mssqlsystemresourceデータベースは、説明どおりに機能します。一度定義すると、すべてのデータベースに特別なsysスキーマとして「表示」されます。残念ながら、これを機能させるために必要な特別な「魔法」は、ユーザーデータベースでは利用できません。スキーマの同期を維持するには、デプロイ手法を使用する必要があります。つまり、他の回答が既に示唆しているように、すべてのデータベースに変更を適用します。

于 2009-06-04T02:07:55.513 に答える