Sql server 删除并重新创建所有数据库视图

Sql server 删除并重新创建所有数据库视图,sql-server,version-control,sql-server-2008-r2,ssms,database-schema,Sql Server,Version Control,Sql Server 2008 R2,Ssms,Database Schema,问题 从SSMS中,我可以为视图、过程和函数使用“生成脚本”,然后将每个脚本保存为“每个对象的单个文件” 考虑到文件对其他视图的依赖性,如何生成正确的顺序以在以后执行这些文件 背景故事 我正在尝试将我的数据库架构置于修订控制之下 对于视图(以及过程和函数),下面的页面建议每个文件保存一个视图。在更新时,将删除所有,然后重新创建所有 不幸的是,该页面从未提及如何处理视图之间的依赖关系的细节 每个对象一个文件 我的策略是编写每个视图、存储过程和函数的脚本 保存到单独的文件中,然后将这些文件提交给源

问题

从SSMS中,我可以为视图、过程和函数使用“生成脚本”,然后将每个脚本保存为“每个对象的单个文件”

考虑到文件对其他视图的依赖性,如何生成正确的顺序以在以后执行这些文件

背景故事

我正在尝试将我的数据库架构置于修订控制之下

对于视图(以及过程和函数),下面的页面建议每个文件保存一个视图。在更新时,将删除所有,然后重新创建所有

不幸的是,该页面从未提及如何处理视图之间的依赖关系的细节

每个对象一个文件

我的策略是编写每个视图、存储过程和函数的脚本 保存到单独的文件中,然后将这些文件提交给源代码管理。如果 有人需要添加一个新视图,他们将视图脚本化到一个文件中,然后 将文件提交到源代码管理。如果有人需要修改视图, 它们修改视图的脚本文件并再次提交。如果你需要 从数据库中删除视图,从源代码管理中删除文件。 这是一个相对简单的工作流程

当开发人员、测试人员或安装人员从 源代码管理并运行更新其本地数据库的工具。这个 该工具使用三步流程:

  • 该工具通过将可用的模式更改文件与数据库中的SchemaAngelog记录进行比较来应用新的模式更改
  • 该工具将删除数据库中的所有存储过程、视图和函数
  • 该工具将运行将视图、存储过程和函数添加回数据库所需的所有脚本

  • 在“生成脚本”部分下。。。进入
    Set Scripting Options
    时,可以单击“高级”并更改选项,如为依赖对象和脚本绑定生成脚本。而且,听起来您正试图将这些存储在GitRepo或类似的东西中。Alex Yates在这方面有很多博客,我肯定会从中吸取教训。我感觉这里有嵌套的视图,这就是为什么您担心视图之间的依赖性。这是一个性能定时炸弹。让视图调用视图似乎是完全合乎逻辑的,但这肯定会降低系统性能@这个选项似乎没有创建一个列出执行顺序的文件。它似乎只是添加文件来生成表,这对我没有帮助。我正在尝试将这些存储在subversion中(我的应用程序代码已经存在于subversion中)。@SeanLange性能还不是问题。由于视图总数相对较低(低于30),我想我可以将嵌套视图复制并粘贴到调用视图中,而require视图从不调用视图。我正在寻找一个更通用的解决方案,因为视图可以调用可以调用其他函数的函数。“通用”解决方案是不使用嵌套视图。老实说,他们是魔鬼的后代。他们可能会在一段时间内表现出色,但随后计划会发生变化,因为数据会发生变化,性能不会开始下降,它实际上会从悬崖上跌落,事情开始在各地超时。我曾经有过这样一个系统,当众所周知的大便击中风扇时,它很难被解开。希望您的函数不是标量函数,因为它们的性能也很差。