1

クライアントに、現在のMSSQLデータベースのコピーを送信するように要求しました。データベースのバックアップ、またはデータベースの再作成に使用できる小さなスクリプトセットが提供される代わりに、数百から数百の個別のSQLスクリプトが提供され、実行する必要のある順序についての指示はありませんでした。

テーブル間に外部キーの依存関係があるため、スクリプトを1回のバッチ操作で単純に実行することはできません。これらのスクリプトは、スクリプトごとに1つのテーブルまたはストアドプロシージャを作成するように制限されているように見えます。

通常、私はクライアントにもっと使いやすい形式で情報を提供するように頼むだけですが、彼らはタイムリーに私たちに返事を返すことで知られておらず、私たちのプロジェクトのタイムラインは彼らの終わりの遅れのためにすでに危険にさらされています。

この膨大なスクリプトのセットからデータベースを再作成するために使用できるツールはありますか?

4

5 に答える 5

5

これは少し難解に聞こえるかもしれませんが、次のことを繰り返し行うことができます。

  1. すべてのスクリプトを「実行するスクリプト」のリストに入れます
  2. 「実行する」スクリプトのすべてのスクリプトを実行します
  3. 成功した実行を削除します
  4. スクリプトがなくなるまで2〜3を繰り返します

依存関係のないスクリプトは、最初のラウンドで終了します。次のラウンドでそれらに依存するもの、そして以下同様に続きます。

これらすべてを、データベーステーブルを使用して使用可能なスクリプトの名前を格納するメタスクリプトから操作することをお勧めします。

幸運を。

于 2012-12-07T19:39:04.893 に答える
1

スクリプトのフォルダーをRedGateSQL Compareのデータソースとして設定し、空のデータベースをターゲットとして指定すると、ターゲットデータベースと比較してデプロイできるようになります。これは、ツールが指定したフォルダーからすべてのSQL作成スクリプトを再帰的に読み取ることができるためです。これは、完全に機能する14日間の試用版として利用できるため、シナリオで簡単にテストできます。

http://www.red-gate.com/products/sql-development/sql-compare/

于 2012-12-08T01:42:43.877 に答える
0

ゴードンの上に構築します。
それらをそれぞれ1つのテーブルに分割します。
FKの数を数え、最初から順に並べ替えます。
次に、Gordonが提案するように実行されるスクリプトを削除します。
もう1つの潜在的な問題は、テーブルを作成してFKで失敗し、テーブルを離れることです。
後で戻ってテイクを作成しますが、テーブルはすでに存在するため失敗します。

テーブルFKでそれらを解析する場合
リストにFKがないテーブルから開始します。
次に、FKがあるテーブルをループします
。すべてのFKがすでにリストにある場合にのみ、リストに追加します。

.NETを知っている場合は、文字列プロパティテーブル、stingプロパティスクリプト、およびFKプロパティ名のプロパティリスト文字列を持つクラス。
彼らはかなりきれいな正規表現を解析する必要があります。

于 2012-12-07T19:43:31.407 に答える
0

これを行う最も速い(そしてはるかに汚い)方法は、すべてのスクリプトを連結して、各スクリプトの間にGOステートメントがあることを確認することです。スクリプトにDROPステートメントが含まれていないことを確認してください。含まれていないと、この手法は機能しません。

連結されたスクリプトを繰り返し実行します...わかりません。10回ほど繰り返します。テストシステムでデータベースが適切に再作成される可能性があります。

より厳密に感じている場合は、ゴードンの提案に従ってください。依存関係を再構築できるツールについてはよくわかりませんが、無料でデモを入手でき、かなり魔法のようなことができるRed-GateのSQLCompareをご覧になることをお勧めします。 。

于 2012-12-07T19:44:57.277 に答える
0

すべての外部キー制約を削除できます。次に、最初にすべてのテーブルを作成し、次にすべての外部キーを追加し直すようにスクリプトを編成します。最後にインデックスを作成します。

于 2012-12-07T19:45:06.793 に答える