Могу ли я найти отношения внешнего ключа для представления в SQL Server?

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

1 ответ

В SQL Server 2008 и более поздних версиях, если вас интересуют только зависимости в одной базе данных, вы можете использовать следующий запрос для определения всех таблиц, представлений и функций, на которые ссылается каждое представление:

;WITH x AS
(
 SELECT
  v = QUOTENAME(OBJECT_SCHEMA_NAME(d.referencing_id))
     + '.' + QUOTENAME(OBJECT_NAME(d.referencing_id)),
  t = QUOTENAME(OBJECT_SCHEMA_NAME(d.referenced_id))
     + '.' + QUOTENAME(OBJECT_NAME(d.referenced_id)),
  td = o2.type_desc
 FROM sys.sql_expression_dependencies AS d
 INNER JOIN sys.objects AS o1
 ON d.referencing_id = o1.[object_id]
 INNER JOIN sys.objects AS o2
 ON d.referenced_id = o2.[object_id]
 WHERE o1.type_desc = 'VIEW'
)
SELECT [View] = v, Referenced_Object = t, [Type] = td
 FROM x
 GROUP BY v, t, td
 ORDER BY v, t; 
Другие вопросы по тегам