現在、データベース スクリプトの展開に RoundHouse を使用しています。スクリプトは、ビュー、関数、アップ、およびストアド プロシージャのフォルダーに編成されます。各スクリプトは単一のオブジェクトを作成または変更します
すべてが長年にわたって機能しています。今まで。関数がビューに依存し、ビューが関数に依存する依存関係の問題があります (循環依存ではありません)。
問題のあるスクリプトを runFirstAfterUp フォルダーに移動することで、この問題に対処しようとしました。
ここ数週間、データベースの増分更新は機能していましたが、スクリプトからの新しいデータベースの作成は失敗しました。すべては、runFirstAfterUp フォルダーに存在するスクリプトが、views または functions フォルダーに存在する依存関係を持ち、長年そこに存在するためです。
runFirstAfterUp フォルダーには、確実に順番に実行されるようにシーケンス プレフィックスを持つスクリプトが含まれています (例: 0001_Create_View1.sql)。
したがって、これを1つずつ整理するのはありがたい作業です:-
- 回し車を走らせる
- スクリプトの実行中にラウンドハウスエラーが発生しました
- スクリプトを runFirstAfterUp に移動し、シーケンスの名前を適切なシーケンスに変更します
- 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 つである可能性があります。展開を管理するためのより良いアイデアはありますか?