Одна из общих проблем в SQL Server – это необходимость найти представления, которые уже установлены для определенных таблиц. Это может быть для других разработчиков, конечных пользователей или даже для нас самих. Хотя мы можем искать в системных таблицах или исследовать каждое представление, есть и другие способы легко найти список всех таблиц, используемых для представления, или список всех представлений, к которым привязана таблица.
Один из подходов к доступу к метаданным SQL Server – использование системных хранимых процедур или представлений INFORMATION_SCHEMA. Системные хранимые процедуры отлично оптимизированы для DBA при использовании через окно запроса, но они не всегда подходят для пользователей приложений, которым может потребоваться дополнительная фильтрация информации и замедление производительности. В этом случае мы можем получить необходимую информацию из представлений INFORMATION_SCHEMA SQL Server.
Давайте рассмотрим пример, в котором мы получаем информацию о базовой таблице для представления ‘vEmployee’ в базе данных ‘AdventureWorks’:
-- Синтаксис для получения базовых таблиц для представления
USE AdventureWorks
GO
SELECT view_name, Table_Name
FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE
WHERE View_Name = 'vEmployee'
ORDER BY view_name, table_name
GO
Результатом вышеприведенного запроса будут все таблицы, которые являются частью представления ‘vEmployee’. Если мы хотим найти все представления, в которых участвует таблица, мы можем использовать следующую команду:
-- Синтаксис для получения данных для таблицы 'Address'
-- Получить представления для таблицы 'Address' в AdventureWorks
USE AdventureWorks
GO
SELECT view_name, Table_Name
FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE
WHERE Table_Name= 'Address'
ORDER BY view_name, table_name
GO
Результатом вышеприведенного запроса будут все представления, в которых участвует таблица ‘Address’.
Метаданные представления, используемые в этом примере, определены в INFORMATION_SCHEMA. Эти представления могут быть найдены в SQL Server 2000 и более новых версиях. Схема INFORMATION_SCHEMA предоставляется в каждой базе данных SQL Server. В SQL Server Management Studio (SSMS) вы можете найти представления для схемы ‘INFORMATION_SCHEMA’ в папке ‘System Views’ в разделе ‘Views’.
Используя представления INFORMATION_SCHEMA, мы легко можем найти таблицы, используемые в представлении, и представления, используемые таблицей в SQL Server. Это может быть полезно для разработчиков, конечных пользователей и администраторов баз данных при анализе отношений между таблицами и представлениями в базе данных.