2017-04-26 3 views
0

50個以上の列を持つテーブルがありますが、わずかな列しか使用されていません。つまり、ストアド・プロシージャーがその表を使用するときは、select/whereステートメントの4-5列のみを参照します。残りの列は使用されません。私はちょうど実際に使用されているそれらの列をリストしたい。 1つの方法は、テーブルの依存関係を見つけ出し、すべてのSPを調べてどの列が使用されているかを調べることです。しかし、その場合私は約30 + Spを持っています。それを行うための効率的な方法はありますか?SQLサーバー内のテーブル内のすべての有用な列を見つけよう

+0

私は辞書でそれを探していますが、覚えていません...列の使用(d)何か。 – jarlh

+0

テーブル内の有用な列によって私は、いくつかのストアドプロシージャがそれらの列を参照していることを意味します。私のdbにspがテーブル内の特定のカラムを参照していない場合、そのカラムは私にとって役に立たない。 – pKay

答えて

2

これを試してみてください:

はTABLE_NAMEで
select name from syscomments c 
join sysobjects o on c.id = o.id 
where TEXT like '%table_name%' and TEXT like '%column_name%' 

は、あなたが出力としてストアドプロシージャ名を取得する手順dependencies.Youをchckしたい列を与え、あなたのテーブルの名前を付けたcolumn_nameに

+0

ありがとうございました。これは行います。 – pKay

3

へ手順で複数の列を使用し、あなたはここで

create procedure sp_sample 
@column_names varchar(200) 
as 
if @column_names='' or @column_nams is null 
    set @column_names='*' 

exec ('select '[email protected]_name +' from table') 

以下のようなコードを使用することができますいくつかの例は以下のとおりです。

exec sp_sample @columnname='id,name' 

または

exec sp_sample @columnname='id,name,telphone' 
0

あなたがSQL Server Data Toolsを使用してデータベースプロジェクトとしてデータベースをインポートする場合は、「すべての参照の検索」contextコマンドを使用して、テーブルまたは列へのすべての参照を見つけることができるようになります。これを特に有用なものにするのは正確さです。列を明示的には言わず、暗黙のうちにそれを参照するインスタンスがSELECT *であっても検索されます。同様の名前を持つテーブルやカラムでも混同されることはありません(具体的な例はIDですが、そうでなければ問題があります)。

カラムが全く参照されているかどうかを知りたい場合は、カラムを削除し、エラーリストに「未解決の参照」エラーがあるかどうかを確認することができます。

関連する問題