在SQL Server环境中,在维护涉及多个表的SQL查询时,通常我需要弄清楚特定列属于哪个表。
不幸的是,查询中的表示法不是TableName.ColumnName
,而只是ColumnName
。
除了手动查看每个表的列定义之外,有没有办法查找从哪个表中提取列?我正在考虑可以在IDE(即Management Studio)或T-SQL语句中使用的东西......但此时我几乎可以接受任何事情。
还有一点:我需要在本地执行此操作,而无需通过网络推送信息,或在SQL Management Studio ...或Visual Studio外部下载其他工具。
答案 0 :(得分:2)
嗯,你可以试试这两个。
在Management Studio中:
您将获得一个图形界面,可以让您更轻松地查看哪个列来自哪个表。
否则,您可以查询(如果您想自动创建)INFORMATION_SCHEMA
:
SELECT c.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS as c
WHERE c.TABLE_CATALOG = N'YOURSCHEMA' AND c.TABLE_NAME = N'YOURTABLE'
答案 1 :(得分:1)
如果安装了Visual Studio,并且可以创建数据库项目,则可以使用重构功能向所有SQL查询添加完全限定名称。如果使用别名,这将使用别名,但会更改脚本,以便每列至少具有参考值。
抓取the instructions from MSDN以完全限定解决方案中.sql文件中包含的所有名称
在“解决方案资源管理器”中,右键单击包含的脚本文件(.sql) 要更新的名称,指向“重构”,然后单击“确定” 完全符合名称。
出现“预览更改”对话框,并显示将要显示的所有名称 更新。
答案 2 :(得分:0)
对于简单查询,我已经能够使用Instant SQL Formatter工具了。
将查询粘贴到编辑器中,在“输出”下拉列表中选择List DB Object
,然后点击Format SQL
按钮。
该页面将输出查询使用的表和字段列表。这些字段将使用表名限定,如上例所示。