根据对象依赖性运行RoundHouse脚本

时间:2018-08-08 15:29:56

标签: sql-server deployment roundhouse

当前,我们一直在使用RoundHouse来部署数据库脚本。脚本被组织到用于视图,功能,启动和存储过程的文件夹中。每个脚本都会创建或更改单个对象

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

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

尽管最近几周进行了增量数据库更新,但是使用脚本创建新数据库失败。所有这些都是因为runFirstAfterUp文件夹中的脚本具有存在于视图或函数文件夹中的依赖关系,而这些依赖关系已经存在了很多年。

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

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

  1. 经营回旋室
  2. 运行脚本时发生回旋错误
  3. 将脚本移至runFirstAfterUp并将序列重命名为适当的序列
  4. 重复1

有68个功能和83个视图。

我的感觉是,功能和视图的全部将被移至runFirstAfterUp-因为顺序很重要。

我的想法是生成一个SQL脚本以首先创建所有视图和函数,以便随后的alter / create视图(如果不存在)将起作用。

所以类似:

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一起使用,因为我们无法远离它?

0 个答案:

没有答案