【问题标题】:Get dependencies from SQL query从 SQL 查询中获取依赖项
【发布时间】:2009-04-20 20:55:52
【问题描述】:

我正在尝试在 C# 中以编程方式执行一些 SQL 查询验证(不调用实际数据库)。本质上,我希望用户能够输入视图、UDF 或 SP 并立即验证其依赖关系。用户会将这些输入到自定义工具中以定义数据库对象。

因此,如果用户输入:

CREATE VIEW someView AS SELECT name, address FROM users

我可以提取“用户”的依赖关系,然后检查存储在内存中的数据库对象集合(例如,表、视图等),以确保其中之一存在依赖关系。请记住,输入到我的自定义应用程序中的实际视图/UDF/SP 非常复杂,自己解析它们是不可取的。

我目前正在尝试使用 Microsoft.Data.Schema.ScriptDom.Sql.TSql100Parser 执行此操作。这提供了一个 parse 方法,它返回查询的 DOM 表示。然而,这是一个非常复杂的 DOM,我基本上不得不为它编写一个完整的解析器。

有什么想法/建议吗?谢谢!

【问题讨论】:

  • 所以你只想拉取查询中使用的对象?

标签: c# .net sql


【解决方案1】:

您可以使用一个名为 sp_depends 的过程...但是由于延迟名称解析,它不是故障安全的。确实没有安全的方法可以做到这一点,在最新版本中它变得更好了,但仍然让人头疼

阅读此Do you depend on sp_depends (no pun intended) 了解我的意思

【讨论】:

  • 感谢您的回复,但我想在不调用 SQL 服务器的情况下执行此操作。使用 sp_depends 不需要这个吗?
  • @manu08: 你想如何在不调用 sql server 的情况下获取视图创建文本?除此之外,sp_depends 不适用于复杂查询(也不适用于简单查询)。
猜你喜欢
  • 2019-02-27
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
  • 2013-09-05
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多