0

目前我们一直在使用 RoundHouse 来部署数据库脚本。这些脚本被组织到视图、函数、up 和存储过程的文件夹中。每个脚本创建或更改单个对象

一切都已经工作了很多年。到现在。我们有依赖问题,其中函数依赖于视图,视图依赖于函数(不是循环依赖)。

我们试图通过将有问题的脚本移动到 runFirstAfterUp 文件夹来解决这个问题。

虽然增量数据库更新在过去几周内有效,但从脚本创建新数据库失败。这一切都是因为存在于 runFirstAfterUp 文件夹中的脚本具有存在于视图或函数文件夹中的依赖项,这些依赖项已经存在多年。

runFirstAfterUp 文件夹包含具有序列前缀的脚本,以确保它们按顺序运行 - 即 0001_Create_View1.sql

因此,将其一一整理是一项吃力不讨好的任务:-

  1. 运行回旋处
  2. 运行脚本的roundhouse错误
  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 脚本之一。有没有更好的想法来管理部署——最好是使用 Roundhouse,因为我们无法摆脱它?

4

0 回答 0