自动存储过程记录
Auto Stored Procedure Documenting
我正在尝试设计一个自动化过程来获取创建的临时 tables、使用的列、这些列相关的 tables 以及可能来自集合的功能的存储过程。存储过程没有return结果集;他们执行计算并将结果插入一组 tables.
我正在考虑使用 Intellisense 的结果来帮助文档,因为它可以识别字符串是否是列、函数、table 等。我不知道如何利用如果我确实有访问权限,但我需要先看看我有什么访问权限。
是否有 API 或在程序或查询中使用 Intellisense 的方法? (我的意思是,智能感知是否使用 tables/xml 或类似的方法来执行其操作)。我在网上搜索过,没有发现任何可以对此事得出结论的信息。我已经看到 Javascript 和 VS 可扩展性,但没有看到 SSMS。
据我所知,唯一的方法是将存储过程作为字符串读取并提取所需的详细信息。
示例:
INSERT INTO TestTable
SELECT a.Column1, b.Col1, a.Column2, a.Column3, c.Col2
FROM Table1 a
INNER JOIN Table2 b on b.ID = a.ID
INNER JOIN Table3 c on c.ID = a.ID
我想知道测试 table 被插入到与连接中每个 table 相关的列及其数据类型、长度、可为空等。
任何想法、批评、问题都欢迎并开放讨论。
这个过程不是一成不变的,只是试图设计如何执行它的概念,并且可能会放弃所有这些,但我们将不胜感激。 (希望这是清楚的,我只能大致了解我要做什么。需要任何进一步的说明,尽管问。)
对于这个网站来说这不是一个真正合适的问题,因为没有简洁和详细的答案。
这不是不可能,也不是完全不可信,只是极其困难。基本上,您需要解析 T-SQL.
您可以从SQL服务器提供的内部表或视图中获取有关数据库对象的所有信息,但是您将需要分析T-SQL代码存储过程以确定有关其行为的详细信息,例如它创建的临时表或这些表的列的(可能)属性。但是如果你打算支持动态 SQL 那么这将要困难得多。
实际上 SQL 服务器提供了一个解析器库,您可以使用(我相信甚至可以重新分发)。
有关代码的一些详细信息,请参阅 Microsoft.SqlServer.Management.SqlParser.Parser Namespace。
我实际上得到了 a tiny library on GitHub,它利用它来操纵 T-SQL 代码。
另一个相关link:
我正在尝试设计一个自动化过程来获取创建的临时 tables、使用的列、这些列相关的 tables 以及可能来自集合的功能的存储过程。存储过程没有return结果集;他们执行计算并将结果插入一组 tables.
我正在考虑使用 Intellisense 的结果来帮助文档,因为它可以识别字符串是否是列、函数、table 等。我不知道如何利用如果我确实有访问权限,但我需要先看看我有什么访问权限。
是否有 API 或在程序或查询中使用 Intellisense 的方法? (我的意思是,智能感知是否使用 tables/xml 或类似的方法来执行其操作)。我在网上搜索过,没有发现任何可以对此事得出结论的信息。我已经看到 Javascript 和 VS 可扩展性,但没有看到 SSMS。
据我所知,唯一的方法是将存储过程作为字符串读取并提取所需的详细信息。
示例:
INSERT INTO TestTable
SELECT a.Column1, b.Col1, a.Column2, a.Column3, c.Col2
FROM Table1 a
INNER JOIN Table2 b on b.ID = a.ID
INNER JOIN Table3 c on c.ID = a.ID
我想知道测试 table 被插入到与连接中每个 table 相关的列及其数据类型、长度、可为空等。
任何想法、批评、问题都欢迎并开放讨论。
这个过程不是一成不变的,只是试图设计如何执行它的概念,并且可能会放弃所有这些,但我们将不胜感激。 (希望这是清楚的,我只能大致了解我要做什么。需要任何进一步的说明,尽管问。)
对于这个网站来说这不是一个真正合适的问题,因为没有简洁和详细的答案。
这不是不可能,也不是完全不可信,只是极其困难。基本上,您需要解析 T-SQL.
您可以从SQL服务器提供的内部表或视图中获取有关数据库对象的所有信息,但是您将需要分析T-SQL代码存储过程以确定有关其行为的详细信息,例如它创建的临时表或这些表的列的(可能)属性。但是如果你打算支持动态 SQL 那么这将要困难得多。
实际上 SQL 服务器提供了一个解析器库,您可以使用(我相信甚至可以重新分发)。
有关代码的一些详细信息,请参阅 Microsoft.SqlServer.Management.SqlParser.Parser Namespace。
我实际上得到了 a tiny library on GitHub,它利用它来操纵 T-SQL 代码。
另一个相关link: