C# 从SQL查询中获取依赖项

C# 从SQL查询中获取依赖项,c#,.net,sql,C#,.net,Sql,我正在尝试用C#以编程方式进行一些SQL查询验证(不调用实际的数据库)。本质上,我希望用户能够输入视图、UDF或SP,并立即验证其依赖关系。用户将把它们输入到自定义工具中,用于定义数据库对象 因此,如果用户输入: CREATE VIEW someView AS SELECT name, address FROM users 我可以提取“用户”的依赖关系,然后检查存储在内存中的数据库对象集合(例如,表、视图等),以确保其中一个存在依赖关系。请记住,输入到我的自定义应用程序中的实际视图/自定义项/

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

因此,如果用户输入:

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

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


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

有一个进程,您可以使用命名的sp_dependens…但是由于延迟名称解析,它不是故障安全的。真的没有安全的方法可以做到这一点,它在最新版本中已经变得更好了,但仍然是一个令人头痛的问题


阅读本文了解我的意思

感谢您的回复,但我希望在不调用SQL server的情况下执行此操作。使用sp_depends不需要这样做吗?@manu08:您希望如何在不调用sql server的情况下获取视图create text?除此之外,sp_depends不适用于复杂的查询(也不适用于简单的查询),所以您只想提取查询中使用的对象?