SQL Server - 查找查询使用的所有表/列

时间:2012-11-02 09:35:40

标签: sql-server-2008-r2

我想分析查询列表,找出报告与某些表/字段的依赖关系,以尝试记录重构数据结构的影响。

有没有办法(可能利用SQL Server查询解析器)根据查询字符串输入找出正在使用的表/字段?

3 个答案:

答案 0 :(得分:1)

您可以发出SET SHOWPLAN_XML ON并运行查询(在另一批中)。

这将返回一个带有预期执行计划的XML

您可以在其中搜索包含//ColumnReference@Database@Schema@Table的{​​{1}}。

但请注意,优化器可能决定扩展视图(如果您正在使用它们),优化一些表(如果它决定不需要它们)等。这也可能有助于重构。

您也可以运行@Column并阅读输出。它将显示引擎使用的表上的实际I / O.

答案 1 :(得分:1)

您可以查看查询的执行计划,然后对该输出进行后处理以接近您要查找的内容。

http://msdn.microsoft.com/en-us/library/ms187735(v=sql.105).aspx

是SHOWPLAN_ALL T-SQL命令的起点。

答案 2 :(得分:1)

如果为查询创建视图或存储过程,则sys.dm_sql_referenced_entities将列出对其他数据库对象的依赖关系。