3

約 1000 のテーブルを持つデータベースがあり、特定のテーブルに関連するすべてのテーブルを見つける必要があります。たとえば、顧客テーブルとしましょう。続行するにはどうすればよいですか?

4

1 に答える 1

11

特定のテーブルに関連するすべてのテーブルを検索するように要求する場合、「顧客」テーブルへの外部キー参照を持つすべてのテーブルを要求していると思います。これは、以前のスタック オーバーフローの質問と密接に関連しています。システム カタログ ビューを使用する次のクエリでうまくいくはずです。

select t.name as TableWithForeignKey, fk.constraint_column_id as FK_columns , c.name as ForeignKeyColumn 
    from sys.foreign_key_columns as fk
        inner join sys.tables as t on fk.parent_object_id = t.object_id
        inner join sys.columns as c on fk.parent_object_id = c.object_id and fk.parent_column_id = c.column_id
    where fk.referenced_object_id = (select object_id from sys.tables where name = 'customers')
    order by TableWithForeignKey, ForeignKeyColumn 

MSDN sys.foreign_key_columns

于 2012-12-27T16:00:36.410 に答える