1

独立系ソフトウェア ベンダーが開発した C# コードと SQL 2008 データベースを研究しており、コードの最適化を試みています。

非常に高い番号のテーブルがあります。列の多くは、明らかに必要とされていない可能性があります。不要な列を削除できるように、このテーブルのどの列が他のテーブル、ストアド プロシージャ、ビュー、または関数によって参照されているかを知りたいです。

私は SQL 2008 の専門家ではありません。組み込みのツールやクエリがある場合は、手順を追って説明していただければ幸いです。

ビューの依存関係を使用すると、このテーブルを参照している他のオブジェクトを見つけることしかできませんが、他のオブジェクトによって参照されているこのテーブルの列はわかりません。

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 に答える