Как узнать, какие представления используют определенную таблицу в SQL Server (2008)? - PullRequest
51 голосов
/ 08 марта 2012

Мне нужно добавить несколько столбцов в таблицу, а также добавить эти столбцы во все представления, которые используют эту таблицу.

Можно ли получить список всех представлений в базе данных, которые используют определенную таблицу?

Ответы [ 6 ]

88 голосов
/ 08 марта 2012

Это должно сделать это:

SELECT * 
FROM   INFORMATION_SCHEMA.VIEWS 
WHERE  VIEW_DEFINITION like '%YourTableName%'
12 голосов
/ 30 апреля 2014

Чтобы найти зависимости таблиц, вы можете использовать представление каталога sys.sql_expression_dependencies:

SELECT 
referencing_object_name = o.name, 
referencing_object_type_desc = o.type_desc, 
referenced_object_name = referenced_entity_name, 
referenced_object_type_desc =so1.type_desc 
FROM sys.sql_expression_dependencies sed 
INNER JOIN sys.views o ON sed.referencing_id = o.object_id 
LEFT OUTER JOIN sys.views so1 ON sed.referenced_id =so1.object_id 
WHERE referenced_entity_name = 'Person'  

Вы также можете попробовать ApexSQL Search бесплатную надстройку SSMS и VS, которая также имеет функцию просмотра зависимостей. Функция просмотра зависимостей позволяет визуализировать отношения всех объектов базы данных SQL, в том числе между зашифрованными и системными объектами, конкретными объектами SQL Server 2012 и объектами, хранящимися в базах данных, зашифрованных с помощью прозрачного шифрования данных (TDE)

Отказ от ответственности: я работаю в ApexSQL в качестве инженера службы поддержки

5 голосов
/ 08 марта 2012

Если вам нужно найти объекты базы данных (например, таблицы, столбцы, триггеры) по имени - взгляните на FREE Red-Gate инструмент под названием SQL Search , который делает это - он ищет всю вашу базу данных для любого вида строк.

enter image description here

enter image description here

Это отличный обязательный инструмент для любого администратора БД или разработчика базы данных - я уже упоминал, что это абсолютно БЕСПЛАТНО для использования в любых целях ??

3 голосов
/ 26 июня 2013

Я считаю, что это работает лучше:

SELECT type, *
FROM sys.objects
WHERE OBJECT_DEFINITION(object_id) LIKE '%' + @ObjectName + '%'
AND type IN ('V')
ORDER BY name

Фильтрация VIEW_DEFINTION внутри INFORMATION_SCHEMA.VIEWS дает мне довольно много ложных срабатываний.

2 голосов
/ 03 августа 2016
SELECT VIEW_NAME
FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE
WHERE TABLE_NAME = 'Your Table'
1 голос
/ 08 марта 2012

выберите вашу таблицу -> просмотреть зависимости -> объекты, которые зависят от

...