2

何百もの SQL Server ストアド プロシージャとスクリプト ファイルがあり、それぞれが使用する正確なテーブルと列を特定する必要があります。SQL が複雑で、多くのテーブルに同じ名前の列があるなどの理由から、これは簡単には実行できません。

ストアド プロシージャが使用するテーブルを教えてくれる以下の SQL を見つけましたが、列レベルに到達して空白にヒットする必要があります。

これを実現するSQLスクリプトを持っている人はいますか、実際には、小さなアプリケーションでこれを織り込むことができるので、.NETコードでも問題ありません。

SELECT 
    OBJECT_NAME(referencing_id) AS referencing_entity_name, 
    o.type_desc AS referencing_desciption, 
    COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id, 
    referencing_class_desc, referenced_class_desc,
    referenced_server_name, referenced_database_name, referenced_schema_name,
    referenced_entity_name, 
    COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name,
    is_caller_dependent, is_ambiguous
FROM 
    sys.sql_expression_dependencies AS sed
INNER JOIN 
    sys.objects AS o ON sed.referencing_id = o.object_id
WHERE 
    referencing_id = OBJECT_ID(N'MySchenma.MyStoredProcedure');
4

1 に答える 1