目前我们一直在使用 RoundHouse 来部署数据库脚本。这些脚本被组织到视图、函数、up 和存储过程的文件夹中。每个脚本创建或更改单个对象
一切都已经工作了很多年。到现在。我们有依赖问题,其中函数依赖于视图,视图依赖于函数(不是循环依赖)。
我们试图通过将有问题的脚本移动到 runFirstAfterUp 文件夹来解决这个问题。
虽然增量数据库更新在过去几周内有效,但从脚本创建新数据库失败。这一切都是因为存在于 runFirstAfterUp 文件夹中的脚本具有存在于视图或函数文件夹中的依赖项,这些依赖项已经存在多年。
runFirstAfterUp 文件夹包含具有序列前缀的脚本,以确保它们按顺序运行 - 即 0001_Create_View1.sql
因此,将其一一整理是一项吃力不讨好的任务:-
- 运行回旋处
- 运行脚本的roundhouse错误
- 将脚本移动到 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 脚本之一。有没有更好的想法来管理部署——最好是使用 Roundhouse,因为我们无法摆脱它?