INFORMATION_SCHEMA.COLUMNS внезапно пуст

Вчера я разработал SQL-запрос, используя поле COLUMN_NAMES из INFORMATION_SCHEMA.COLUMNS в базе данных SQL Server. Запрос работал отлично, особенно запрос COLUMN_NAMES правильно выводит имя моих столбцов.

Однако сегодня утром я попытался повторно запустить тот же запрос и на этот раз получил пустую таблицу. Сужая проблему, она сводилась к следующему запросу, внезапно выдавшему 0 строк:

SELECT 
    COLUMN_NAME
FROM 
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    TABLE_NAME = 'MyTableName'
ORDER BY 
    ORDINAL_POSITION

Я не делал никаких изменений в самом сервере. Есть ли у кого-нибудь понимание того, что могло произойти?


person aweb    schedule 08.01.2021    source источник
comment
Документация по Конфигурация видимости метаданных.   -  person Zhorov    schedule 08.01.2021
comment
Подключились сегодня как другой пользователь?   -  person jarlh    schedule 08.01.2021
comment
@jarlh Я не единственный, кто обращается к базе данных, но и сам, я всегда подключаюсь с одним и тем же логином (аутентификация Windows).   -  person aweb    schedule 08.01.2021
comment
Вы уверены, что выполняете свой запрос в контексте той же базы данных? Можете ли вы явно добавить его имя (FROM your_db.INFORMATION_SCHEMA.COLUMNS)?   -  person sepupic    schedule 08.01.2021


Ответы (1)


Итак, как предложил @sepupic, я попытался добавить имя базы данных в запрос, т.е.

SELECT 
    COLUMN_NAME
FROM 
    MyDBName.INFORMATION_SCHEMA.COLUMNS
WHERE 
    TABLE_NAME = 'MyTableName'
ORDER BY 
    ORDINAL_POSITION

и это решило проблему. Я не уверен, понимаю ли я, почему вчера запрос работал из того же контекста без добавления этого имени БД.

Я думаю, что в любом случае это хорошая практика, чтобы добавить его в запрос, поэтому я буду придерживаться этого.

person aweb    schedule 08.01.2021
comment
Вероятно, вчера вы открыли редактор запросов, когда эта база данных была выделена, и, таким образом, он открыл соединение с этой базой данных по умолчанию (как если бы вы набрали use SomeDbName;), но сегодня вы этого не сделали, поэтому этого не произошло. - person underscore_d; 08.01.2021