0

現在、データベース スクリプトの展開に RoundHouse を使用しています。スクリプトは、ビュー、関数、アップ、およびストアド プロシージャのフォルダーに編成されます。各スクリプトは単一のオブジェクトを作成または変更します

すべてが長年にわたって機能しています。今まで。関数がビューに依存し、ビューが関数に依存する依存関係の問題があります (循環依存ではありません)。

問題のあるスクリプトを runFirstAfterUp フォルダーに移動することで、この問題に対処しようとしました。

ここ数週間、データベースの増分更新は機能していましたが、スクリプトからの新しいデータベースの作成は失敗しました。すべては、runFirstAfterUp フォルダーに存在するスクリプトが、views または functions フォルダーに存在する依存関係を持ち、長年そこに存在するためです。

runFirstAfterUp フォルダーには、確実に順番に実行されるようにシーケンス プレフィックスを持つスクリプトが含まれています (例: 0001_Create_View1.sql)。

したがって、これを1つずつ整理するのはありがたい作業です:-

  1. 回し車を走らせる
  2. スクリプトの実行中にラウンドハウスエラーが発生しました
  3. スクリプトを runFirstAfterUp に移動し、シーケンスの名前を適切なシーケンスに変更します
  4. 1を繰り返す

68 の関数と 83 のビューがあります。

私の感じでは、関数とビューのセット全体が runFirstAfterUp に移動されます。順序が重要だからです。

私の考えは、すべてのビューと関数を最初に作成する SQL スクリプトを生成して、存在しない場合の後続の変更/作成ビューが機能するようにすることです。

したがって、次のようなものがあります。

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('dbo.f_func1')) EXECUTE('CREATE dbo.f_func1()RETURNS @FunctionReturn TABLE(Col1 INT) AS BEGIN INSERT INTO @FunctionReturn SELECT NULL RETURN END');

これは、runFirstAfterUp スクリプトの 1 つである可能性があります。展開を管理するためのより良いアイデアはありますか?

4

0 に答える 0