查找哪些表,存储过程,视图和函数引用了表的哪些列

时间:2013-03-30 09:36:38

标签: sql-server-2008

我正在研究由独立软件供应商开发的C#代码和SQL 2008数据库,并尝试优化代码。

有一张非常高的桌子。列,其中许多可能不是必需的。我想知道其他表,存储过程,视图或函数引用了此表的哪些列,以便我可以删除不需要的列。

我不是SQL 2008的专家;因此,如果有任何内置工具或查询,将逐步了解说明。

使用View Dependencies,我只能找出哪个其他对象引用此表,但它不会告诉该表的列是由其他对象引用的。

1 个答案:

答案 0 :(得分:2)

选择表名,然后按ALT + F1,它将为您提供SQL Server中其他表和视图引用的列的详细信息。

此外,您可以使用以下查询进行关键字搜索。您需要在@Keyword变量中编写所需的列名称,然后在查询下方将为您提供使用该关键字的所有对象详细信息。这将对您有所帮助。

set nocount on 
declare @Keyword as varchar(200)
set @Keyword = 'Column name'

SELECT DISTINCT
    name, 
    CASE o.xtype 
        WHEN 'S' THEN 'System Stored Proc'
        WHEN 'F' THEN 'Foreign Key'
        WHEN 'U' THEN 'Table'
        WHEN 'V' THEN 'View'
        WHEN 'P' THEN 'Stored Proc'
        WHEN 'PK' THEN 'Primary Key'
        WHEN 'TR' THEN 'Trigger'
        WHEN 'UQ' THEN 'Unique Index'
        WHEN 'D' THEN 'Default'
        WHEN 'FN' THEN 'User Defined Function'
        ELSE 'Unknown'
    END, 
    text 
FROM
    sysobjects o left join syscomments c ON c.id = o.id
WHERE
    text LIKE '%' + @Keyword + '%' 
OR  name LIKE '%' + @Keyword + '%'