4

Sql Server 2008(およびおそらく他のほとんどのバージョン):Management Studioには、理論的にはすべてのオブジェクト(右クリック、タスク、スクリプトの生成)を含むデータベース全体をスクリプト化できる「スクリプトの生成」オプションがあります。ほとんどの場合は問題なく動作しますが、データベース内のすべてのビュー/ストアドプロシージャ/関数をスクリプト化するために使用すると、オブジェクト間の依存関係を考慮しないスクリプトが生成されます。

たとえば、ビューAが関数Bを参照している場合、必ずしも関数Bが最初にスクリプトに配置されるとは限りません。

エラーなしで実行される順序になるように、生成される非常に長いスクリプトを解くには長い時間がかかります。

より良い方法があるに違いありません。できればお金をかけずにこれを回避するための最良の方法は何ですか?*

*(赤いゲートftw)

4

2 に答える 2

3

残念ながら、このようなスクリプトをすばやく簡単に作成する唯一の方法は、サード パーティのツールを使用することです。私たちはApex Scriptを使用していますが、他にもツールがあり、Red Gate にはおそらく独自のバージョンがあります。

その他のオプションは次のとおりです。

  • すべてが実行されるまでスクリプトを何度も実行する
  • 常に機能するとは限らない sys.dependances を使用して自分で正しい順序を作成しようとしています
  • 過剰な独自の依存関係アルゴリズムを考え出す…</li>

以前のバージョンの SQL Server では、sys 依存関係ビューにバグがありました。SQL 2008 がリリースされようとしていたときに、それについて読んだことを覚えています。

すべての詳細を覚えているわけではありませんが、オブジェクトがドロップされて再作成されたときに依存関係が正しく機能しないことが原因でした。

于 2013-08-16T09:53:49.450 に答える
1

貧乏人のアプローチは次のとおりです。

  1. 下から順にリストする sys.sql_dependencies に基づいてクエリを作成します。つまり、最初にベース オブジェクトをリストし、次にそれらが依存するオブジェクトをリストします。これにより、オブジェクトをスクリプト化する順序が決まります。
  2. 次に、powershell を使用して、これらのオブジェクトをスクリプト化します。
于 2011-04-04T17:24:38.477 に答える