2016-11-15 9 views
0

クエリでどのテーブルとカラムが参照されているかを知りたいSQLクエリがあります。このSQLクエリで参照されている列のリバースエンジニアリングリスト

USE AdventureWorks 
GO 
SELECT t.name AS table_name, 
SCHEMA_NAME(schema_id) AS schema_name, 
c.name AS column_name 
FROM sys.tables AS t 
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID 
WHERE c.name LIKE '%EmployeeID%' 
ORDER BY schema_name, table_name; 

からたとえば、私はSYS.TABLES、列から、OBJECT_IDがように言及していることを知っていただきたいと思います。 sys.columnsにはOBJECT_IDがあり、という名前はです。

私がクエリ/ビュー定義から得た実際のクエリはこれ以上のものですが、これは例として役立ちます。

私はこれを達成できますか? 多くのありがとうございます。

答えて

0

これを実行できる唯一の方法は、SQLスクリプト自体を解析し、テーブルと列を返すことです。 General SQL Parser(無料のPythonベースのSQLParseなど、より多くのvia googleなど)や、これを数回行う必要がある場合は、ここでオンラインデモ版を使用できます。 http://107.170.101.241:8080/getTableColumn/(トップリンクhere)。

明らかに独自のロジックを構築しようとしているSMOまたは単にのようなツールを使用して独自のソリューションをコーディングできますが、それは努力の全体の多くの...

+0

おかげであなたの答えを@iamdave。これらのソリューションは、SQLスクリプトのバリエーションを考慮に入れますか?たとえば、生成されたスクリプト(デザイナを使用して設計されているもの)でさえもいくつかのバリエーションがあります。[tab1] .col1、tab1.col1、 "tabl1" .col1、カラム名はジョインではあいまいではないので、例えば、A列からcol1、B.col2を選択する。常に全参照a.col1、b.col2の代わりにBbを結合する。 – Kenny

+0

@Kenny正しいSQL構文の一部であれば、そうする必要があります。見つけられる最も簡単な方法は、デモを試してみることです。確かでない場合は、ApexSQL(無料SSMS​​プラグイン)などのSQLフォーマッタを使用してスクリプトを上記のツールに組み込む前に再フォーマットすることができます。 – iamdave

関連する問題