4

Sql Server 2008(可能还有大多数其他版本):Management Studio 有一个“生成脚本”选项,理论上可以用所有对象(右键单击、任务、生成脚本)编写整个数据库的脚本。它在大多数情况下都可以正常工作,但是当您使用它为数据库中的所有视图/存储过程/函数编写脚本时,它会生成一个不考虑对象之间依赖关系的脚本。

例如,如果视图 A 引用了函数 B,它不一定会首先将函数 B 放入脚本中。

解开生成的长脚本需要很长时间,以便它的运行顺序不会出错。

肯定有更好的办法。解决这个问题的最佳方法是什么,最好不花任何钱?*

*(红门ftw)

4

2 回答 2

3

不幸的是,创建此类脚本的唯一快速简便的方法是使用一些第三方工具。我们使用的是Apex 脚本,但也有其他工具,Red Gate 可能有自己的版本。

其他选项包括:

  • 多次运行脚本,直到所有内容都执行完毕
  • 尝试使用 sys.dependancies 自己创建正确的顺序,这可能并不总是有效
  • 想出你自己的依赖算法,这有点矫枉过正……</li>

以前版本的 SQL Server 中的 sys 依赖项视图中存在错误。我记得在 SQL 2008 即将发布时读过它。

我不记得所有细节,但这是关于在删除和重新创建对象时依赖项无法正常工作的问题。

于 2013-08-16T09:53:49.450 回答
1

这是一个穷人的方法:

  1. 根据自下而上列出的 sys.sql_dependencies 制作查询。也就是说,首先列出基础对象,然后列出这些对象所依赖的对象,等等。这将为您提供编写对象脚本的顺序。
  2. 然后使用 powershell 编写这些对象的脚本。
于 2011-04-04T17:24:38.477 回答