2016-03-22 4 views
1

私はMicrosoft SQL Serverを使用しています。私は何百ものストアドプロシージャを持つDBを持っています。依存関係を見つけるには、SPを右クリックし、依存関係の表示を選択して、objects that depend on [name]をクリックします。spに依存するオブジェクトを見つける

私はすべて保存されprocsの

select * from INFORMATION_SCHEMA.ROUTINES where ROUTINE_TYPE = 'procedure' 

を見つけるために、このクエリを持っていると私はこれを追加した場合、私はすべて単一のシステムSPを除外します。

and LEFT(routine_name, 3) not in ('sp_','xp_','ms_')` 

他のproc/function/triggerが依存しないすべてのSPを検索したいと思います。
例:sproc1です。私はobjects that depend on [sproc1]に要素を持っていません。これは何もこのSPに依存しないことを意味します。

1年以上変更されていないprocsを検索するクエリは、いくつかの操作がすべてのうるう年を実行するため、オプションではありません。ストアドプロシージャの名前を決定するためのクエリを書く方法はありますか? NOONEが依存するストアドプロシージャはどれですか? ([this_sp]に依存ゼロのオブジェクトを持つ)

答えて

0

あなたは下の検索オブジェクトのリストを変更することができます。

SELECT * 
FROM sys.objects o 
WHERE NOT EXISTS 
(
    SELECT * 
    FROM sys.sql_expression_dependencies e 
    WHERE e.referenced_id = o.object_id 
) 
AND o.type IN (N'V', N'P', N'TF', N'IF', N'FN') 
関連する問題