按依赖顺序编写 Sql Server 数据库中所有视图/函数/过程的脚本

发布于 2024-10-30 06:03:39 字数 322 浏览 1 评论 0原文

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

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

需要很长时间才能理清生成的长脚本,使其按顺序运行而不会出现错误。

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

* (red gateway ftw)

Sql Server 2008 (and probably most other versions): Management Studio has a 'generate scripts' option that can in theory script a whole database with all objects (Right click, tasks, Generate Scripts). It works OK for most things but when you use it to script all views/stored procedures/functions in a database, it generates a script that does not take account of dependencies between the objects.

e.g. If View A references Function B it won't necessarily put Function B in the script first.

It takes a long time to untangle the great long script that gets produced so that it is in an order that will run without errors.

There must be a better way. Whats the best way to get round this, preferably without spending any money?*

* (red gate ftw)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

海拔太高太耀眼 2024-11-06 06:03:39

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

其他选项包括:

  • 多次运行脚本,直到所有内容都执行完毕
  • 尝试使用 sys.dependancies 自己创建正确的顺序,但这可能并不总是有效
  • 提出自己的依赖算法,这是一种过大的杀伤力……

之前的 sys 依赖关系视图中有一个错误SQL Server 版本。我记得在 SQL 2008 即将发布时读到过它。

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

Unfortunately, the only quick and easy way to create such a script is using some third party tools. We’re using Apex Script but there are also other tools out there and Red Gate probably has its own version of this.

Other options are:

  • Running the script many times until everything is executed
  • Trying to create correct order yourself using sys.dependancies which may not work always
  • Coming up with your own dependency algorithm which is an overkill …

There was a bug in sys dependencies views in previous versions SQL Server. I remember reading about it when SQL 2008 was about to be released.

I don’t remember all the detail but it was something about dependencies not working correctly when objects were dropped and re-created.

貪欢 2024-11-06 06:03:39

这是一个穷人的方法:

  1. 根据
    sys.sql_dependency 列出自
    自下而上。即列表基数
    首先是物体,然后是其上的物体
    这些取决于哪些,等等。这将
    给你顺序
    为您的对象编写脚本。
  2. 然后使用 powershell 编写脚本
    对象出来。

Here's a poor-man's approach:

  1. Craft a query based on
    sys.sql_dependencies that lists from
    the bottom up. That is, list base
    objects first, then the objects upon
    which those depend, etc. This will
    give you the order in which to
    script your objects.
  2. Use powershell to then script those
    objects out.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文