2011-12-09 20 views
2

SQL問合せとの外部キー関係を見つけることは可能ですか?SQL問合せとの外部キー関係の検索

データベースは私の外部にあり、直接アクセスしてServer Management Studioのリンクを確認することはできません。あなたが各テーブルを照会する必要があると列[ID年代]はそれぞれ別のテーブルに存在しているかどうか確認するためにどこ

+0

メタデータの検索は、RDBMS固有のものです。どのデータベースエンジンを使用していますか? – dasblinkenlight

+0

私は確信していませんが、それが役に立ったらSQL Server 2008だと思っています – user1076439

+0

'sp_help my_table'のような、あなたが調べたいリレーションシップをテーブル上で' sp_help'という名前のストアドプロシージャを実行してみてください。テーブルを説明する7つの結果セットを返すべきです。最後のものは、テーブルの外部キーに関する情報を持つ必要があります。 – dasblinkenlight

答えて

-2

ありませんあなたはカント、

しかし、あなたはそれを手動で確認することができますが、それは面倒です。その関係を見る。

よろしく

+0

私に知らせてくれてありがとう、データベースは560のテーブルで構成されていますので、私はちょうどそれを見逃すことがあります! – user1076439

+0

SQL管理スタジオでサーバーにアクセスでき、ビューを使用してアクセスしているデータベース内のすべてのテーブルの関係を見ることができれば、はるかに優れています。 – BizApps

2

これらのシステム・ビューを使用することを検討して、外部キーについて検索するには:

sys.sysconstraints 
sys.columns 
sys.tables 

あなたがたcolid、COLUMN_ID上でこれらの3つのビューが参加することができ、外部キー制約についての完全な情報を取得するためにOBJECT_ID。

これらのビューは、外部キーのリストを取得するには、SQL Serverで2005+

7

する必要があり、あなたはこのクエリを実行することができます

SELECT t.name AS FKTableName 
    , fk.name AS NameOfForeignKey 
    , pc.name AS FKColumn 
    , rt.name AS ReferencedTable 
    , c.name AS ReferencedColumn 
FROM sys.foreign_key_columns AS fkc 
INNER JOIN sys.foreign_keys AS fk ON fkc.constraint_object_id = fk.object_id 
INNER JOIN sys.tables AS t ON fkc.parent_object_id = t.object_id 
INNER JOIN sys.tables AS rt ON fkc.referenced_object_id = rt.object_id 
INNER JOIN sys.columns AS pc ON fkc.parent_object_id = pc.object_id 
    AND fkc.parent_column_id = pc.column_id 
INNER JOIN sys.columns AS c ON fkc.referenced_object_id = c.object_id 
    AND fkc.referenced_column_id = c.column_id 

追加が必要な場合、このクエリはまた、より複雑にすることができますあなたの設定の情報。

関連する問題