我正在尝试设计一个自动化流程来获取创建的临时表,使用的列,这些列所涉及的表以及可能来自一组存储过程的函数。存储过程不返回结果集;他们执行计算并将结果插入到一组表格中。
我正在考虑使用Intellisense的结果来帮助编写文档,因为它可以识别字符串是否是列,函数,表等。如果我有访问权限,我不知道如何利用它的强大功能但是我需要先看看我会有什么访问权限。
是否有API或方法在程序或查询中使用Intellisense? (我的意思是,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
我想知道插入的测试表,与连接中每个表相关的列及其数据类型,长度,可空等。
欢迎提出任何想法,批评,问题并开放讨论。
这个过程并非一成不变,只是试图设计如何执行的概念,并可能废弃所有这些,但任何帮助将不胜感激。 (希望这很清楚,我只能看看我想要做什么。需要进一步澄清,只要问一下。)
答案 0 :(得分:0)
对于这个网站来说,这不是一个合适的问题,因为没有简洁的和详细的答案。
这不是不可能的,也不是完全不可信的,只是极其困难。基本上,您需要解析T-SQL。
您可以从SQL Server提供的内部表或视图中获取有关数据库对象的所有信息,但是您需要分析存储过程的T-SQL代码以确定有关其行为的详细信息,例如它创建的临时表或这些表的列的(可能)属性。但是,如果您打算支持动态SQL,那么这将变得更加困难。
事实上,您可以使用SQL Server提供的解析器库(甚至可以重新分发)。
有关代码的详细信息,请参阅Microsoft.SqlServer.Management.SqlParser.Parser Namespace。
我实际上得到了a tiny library on GitHub,它使用它来操作T-SQL代码。
另一个相关链接: