6

SQL Server Management Studio の [依存関係の表示] 機能は、すべての依存関係を返すことはほとんどないため、ほとんど役に立たないことをしばらく知っていましたが、より良い代替手段はありますか? これは明らかな理由から非常に強力な機能ですが、(Microsoft の場合のように) 結果に頼ることができない場合は、安全を期すためにとにかくすべての作業を手動で行う必要があります。

これは非常に簡単に実装できるように思えますが、これを効果的に処理するツールはありますか?

補足として、「依存関係の表示」の何が問題なのか知っている人はいますか? 識別が困難な特定のクラスの依存関係はありますか?

4

4 に答える 4

2

オブジェクト名とテキスト定義のテキスト検索を行うSQL検索を使用してみることができます。利点は、動的SQL参照も取得することです。欠点は、真の依存関係ツリーに基づいて検索しないため、誤検知を取得する可能性があることです。

http://www.red-gate.com/products/sql-development/sql-search/

もう1つの利点は、現在無料であるということです。

于 2012-05-14T15:17:56.867 に答える
2

Red Gate には、非常にうまく機能するSQL Dependency Trackerというツールがあります。

基本的な情報を提供する sys.sql_dependencies ビューに対してクエリを作成することもできます。これに似ています:

SELECT o.name, o.type_desc, p.name, p.type_desc
FROM sys.sql_dependencies d
INNER JOIN sys.objects o
    ON d.object_id = o.object_id
INNER JOIN sys.objects p
    ON d.referenced_major_id = p.object_id

依存関係の検索に関する記事は次のとおりです。

SQL Server 2005 で依存関係を見つける

于 2012-05-14T15:03:45.860 に答える
0

これが 3 ステップのプロセスです。まだ完全ではありませんが、いくつかのギャップを解消するのに役立ちます。テーブル "WidgetUser" への依存関係を探しているとします。

まず、テーブルへの参照を持つ可能性のあるすべてのモジュールのリストを取得します。クエリ結果をテキストに出力します。

select 'EXEC sys.sp_refreshsqlmodule ''dbo.' + OBJECT_NAME(m.object_id) + ''''
from sys.sql_modules m
where m.definition like '%WidgetUser%'

次に、その出力テキストを貼り付けて更新を実行します。これは次のようになります。

EXEC sys.sp_refreshsqlmodule 'dbo.up_WidgetUser_Select'
EXEC sys.sp_refreshsqlmodule 'dbo.up_WidgetUser_Update'
EXEC sys.sp_refreshsqlmodule 'dbo.WidgetUserView'
EXEC sys.sp_refreshsqlmodule 'dbo.ufx_WidgetUser_Fooinize'
...

依存関係が最新になったので、次を実行しますsp_depends

EXEC sp_depends @objname = N'dbo.WidgetUser'
于 2012-12-12T21:01:25.340 に答える