Поиск всех таблиц и полей по «многим» сторонам связи с определенной таблицей - PullRequest
0 голосов
/ 11 июня 2010

в Sql Server 2005, у меня есть главная таблица и несколько других таблиц, которые связаны с этот мастер через несколько один ко многим отношениям. Как я могу найти все таблицы и поля, которые связаны с первичный ключ в главной таблице, на стороне "много"?

Я знаю, что могу извлечь это, запросив представления из INFORMATION_SCHEMA, но я не знаю, где именно я могу найти эту информацию.

Спасибо

Ответы [ 2 ]

1 голос
/ 11 июня 2010

Проверить:

INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE

0 голосов
/ 12 июня 2010

Я нашел ответ с некоторой помощью на группах серверов SQL Я использую следующий запрос, который возвращает мне имя схемы, таблицы и имя поля на одной и многих сторонах отношений:

SELECT
    SchemaParent.name AS ParentSchemaName, 
    TableParent.name AS ParentTableName, 
    ColumnParent.name AS ParentColumnName, 
    SchemaChild.name AS ChildSchemaName, 
    TableChild.name AS ChildTableName, 
    ColumnChild.name AS ChildColumnName
FROM         
    sys.foreign_key_columns AS kc INNER JOIN
        sys.objects AS TableChild ON kc.parent_object_id = TableChild.object_id INNER JOIN
        sys.schemas AS SchemaChild ON TableChild.schema_id = SchemaChild.schema_id INNER JOIN
        sys.objects AS TableParent ON kc.referenced_object_id = TableParent.object_id INNER JOIN
        sys.schemas AS SchemaParent ON TableParent.schema_id = SchemaParent.schema_id INNER JOIN
        sys.columns AS ColumnParent ON kc.referenced_object_id = ColumnParent.object_id AND kc.referenced_column_id = ColumnParent.column_id INNER JOIN
        sys.columns AS ColumnChild ON kc.parent_object_id = ColumnChild.object_id AND kc.parent_column_id = ColumnChild.column_id
ORDER BY ParentTableName, ChildTableName
...