mssql INFORMATION_SCHEMA COLUMNS пусто

У меня есть приложение rails, которое импортирует свои собственные представления.

Теперь самый первый запрос mssql терпит неудачу, потому что информационная схема возвращает 0 строк при запросе доступных столбцов в определенной таблице (какие рельсы должны подготовить объекты).

При подключении к серверу mssql через студию я могу развернуть ПРОСМОТР и увидеть все необходимые столбцы, однако запросив информационную схему следующим образом:

| ВЫБЕРИТЕ COLUMN_NAME ИЗ INFORMATION_SCHEMA.COLUMNS, ГДЕ TABLE_NAME = 'view'

возвращает нулевые строки.

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

Мне интересно, будет ли:

  • есть какая-то очевидная причина, почему это не удается?
  • MSSQL строит INFORMATION_SCHEMA по запросу, т. е. когда я запрашиваю таблицу SCHEMA.COLUMNS, использует ли mssql кэшированные данные или фактически запрашивает БД в этот момент, какие столбцы существуют?
  • если ответ отрицательный: могу ли я перестроить кеш/таблицу COLUMNS?
  • этот запрос вообще работает для VIEW?

Я также перезапустил службу sql и заглянул в базу данных событий в поисках сломанных таблиц, индексов или чего-то еще. Однако события ничего не выявили (очевидно).

Что-то еще, что можно было упустить?

Спасибо тебе


person ukeer    schedule 12.02.2014    source источник
comment
Возможный дубликат: stackoverflow.com/questions/7217886/   -  person TTeeple    schedule 12.02.2014


Ответы (2)


Используйте этот запрос, чтобы получить имена столбцов для ваших представлений...

 SELECT C.name 
 FROM sys.columns c INNER JOIN sys.views v
 ON c.[object_id] = v.[object_id]
 WHERE v.name = 'Your_View_Name'

Причины, по которым вам не следует использовать представление информационной схемы, прочитайте дело против INFORMATION_SCHEMA рассматривает статью Аарона Бертрана.

person M.Ali    schedule 12.02.2014

Убедитесь, что вы указали полный путь к таблице:

select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_CATALOG = 'dbasename' and TABLE_SCHEMA = 'dbo' and TABLE_NAME = 'tablename'
person user5480949    schedule 23.10.2015