1

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

有一张桌子的编号很高。列,其中许多可能显然不需要。我想知道该表的哪些列被其他表、存储过程、视图或函数引用,以便删除不需要的列。

我不是 SQL 2008 方面的专家;因此,如果有任何内置工具或查询,将不胜感激分步说明。

使用 View Dependencies,我只能找出哪些其他对象引用了该表,但它不知道该表的哪些列被其他对象引用。

4

1 回答 1

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 + '%'
于 2013-03-30T11:45:11.913 回答