Я пытаюсь написать некоторый код SQL, который при представлении представления будет определять столбцы, которые ссылаются на столбцы представлений и работают, если есть какие-либо индексы этих столбцов. Конечная цель - предоставить пользователям список столбцов, которые можно было бы использовать при запросе представления.SQL Server 2008 Просмотр столбцов соответствует столбцам таблицы таблицы
В настоящее время я могу найти только те столбцы, которые использует вид (и по расширению их индексов), но я не могу их сопоставить с столбцами индекса.
Например:
У меня TableA
, который имеет 5 колонок: ID
, Name
, Val1
, Val2
, TableBID
У меня TableB
, который имеет 3 колонки: ID
, Name
, Code
Затем я создаю вид, View1
, то есть:
SELECT A.ID,
Name,
Val1
FROM TableA A
INNER JOIN TableB ON A.TableBID = B.ID
WHERE B.Code = 'AAA'
Когда я запрашиваю для ссылок с помощью:
SELECT *
FROM sys.dm_sql_referenced_entities('dbo.View1', 'OBJECT')
я получить список ссылок Table/Column внутри него, но никаких признаков, которые не в виде колонок ссылки какие.
Есть ли способ получить доступ к необходимой мне информации, помните, что я не могу выполнить сопоставление имен, поскольку столбцы в псевдониме могут использовать псевдонимы и, следовательно, могут не иметь тех же имен, что и базовые данные.
Я использую SQL Server 2008 с пакетом обновления 1 (SP1), если это имеет какое-либо влияние.
Конечные пользователи не должны учитывать индексы –
Если «конечная цель состоит в том, чтобы предоставить пользователям список столбцов, которые можно было бы использовать при запросе представления», а затем просто отобразить все столбцы. В поле не обязательно указывать индекс для запроса. –
Его предназначенный для интерфейса администратора для пользователей с особенно высокими разрешениями, столбцы могут быть помечены как «Поиск», но значения по умолчанию для этого состояния будут определяться наличием индекса. Он работает для таблиц, но для представлений, поскольку я не могу использовать псевдонимы столбцов сопоставления с их базовым столбцом таблицы, я не могу разобраться, есть ли там индекс или нет. Я, вероятно, не объяснил это хорошо, но эта функция предназначена для разрешения запросов, в которых будет создано предложение. Чтобы уменьшить вероятность создания медленного оператора SQL, направляя пользователей на использование индексированных столбцов. –