2010-04-20 2 views
3

Я пытаюсь написать некоторый код 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), если это имеет какое-либо влияние.

+2

Конечные пользователи не должны учитывать индексы –

+1

Если «конечная цель состоит в том, чтобы предоставить пользователям список столбцов, которые можно было бы использовать при запросе представления», а затем просто отобразить все столбцы. В поле не обязательно указывать индекс для запроса. –

+0

Его предназначенный для интерфейса администратора для пользователей с особенно высокими разрешениями, столбцы могут быть помечены как «Поиск», но значения по умолчанию для этого состояния будут определяться наличием индекса. Он работает для таблиц, но для представлений, поскольку я не могу использовать псевдонимы столбцов сопоставления с их базовым столбцом таблицы, я не могу разобраться, есть ли там индекс или нет. Я, вероятно, не объяснил это хорошо, но эта функция предназначена для разрешения запросов, в которых будет создано предложение. Чтобы уменьшить вероятность создания медленного оператора SQL, направляя пользователей на использование индексированных столбцов. –

ответ

-1

Переименовать столбцы с помощью уникальной комбинации Табличное имя + '_' + ColumnName для каждой колонки просмотра. Затем вы можете разделить столбцы видов на стол и столбец.

Смежные вопросы