我有非常大的查询(这里使用了超过100个表和数千列),我需要获取此查询中使用的所有列和表的列表。也许有任何已经创建的软件或脚本来实现它?
例如:
查询:
SELECT t1.Col1, t1.Col2, t1.Col3, t2.Col4, t2.Coln
FROM TableName1 t1
JOIN TableName2 t2 ON t1.Col1 = t2.Col4
输出应为:
TableName1
Col1
Col2
Col3
TableName2
Col4
Coln
答案 0 :(得分:0)
我同意这些评论,询问您为什么需要此类信息以及为什么查询需要查询这么多表。除此之外,这仍然是可以解决的。
一些低技术方式将是:
dbo.table_name
),它们应该是为了获得最佳性能,请在文本编辑器中搜索模式,或者编写一个小的shell脚本来解析查询dbo
的文字。但这就是我要做的。这可能是最简单和最可靠的。 将查询放入存储过程,安装过程并检查其依赖关系。
在SQL Server Management Studio中,如果右键单击存储过程,则会出现“查看依赖项”菜单项,该项将显示它依赖的表。如果您需要更多程序化答案,可以从DMV(sys.dm _ *)中提取依赖项。
select re.referenced_schema_name + '.' + re.referenced_entity_name as table_name
from sys.dm_sql_referenced_entities('PROC_NAME', 'OBJECT') re
where re.referenced_minor_id = 0;
这也为查询调用的任何函数返回一行。如果需要,我相信你可以通过加入分解对象类型的DMV来过滤掉它们。