Изменен ли порядок возвращаемых столбцов для выбора * для SQL Server 2012?

Изменен ли порядок возвращаемых столбцов для выбора * для SQL Server 2012?

Например, для таблицы t с столбцами a1, a2, a3, для которых select * from t возвращал столбцы в порядке a1, a2, a3 для версий SQL Server до 2012 года и после миграции к 2012 году заказ изменился на другой порядок, например, a3, a1, a2.

Кто-нибудь еще заметил это?

Почему это изменилось?

Мне лично интересно, почему это произошло. Может быть, проблема с переходом на SS 2012?

(Нет, мое приложение не зависит от упорядочения столбцов, и я знаю, что я должен указать столбцы, которые мне нужны, в том порядке, в котором они нужны, вместо использования select * ).

2
добавлено
Просмотры: 2
nl ja de
Я не видел такого поведения. Как база данных переходила от некоторых до версии на SQL Server 2012? Вы обновили систему, выполнили резервное копирование/восстановление, отсоединение/подключение, использование мастера импорта/экспорта данных, SSIS, сторонний инструмент и т. Д.? Какова была версия ранее?
добавлено автор Aaron Bertrand, источник

1 ответы

Это зависит от значения столбца ordinal_position каждого столбца в таблице information_schema.columns .

Каждый столбец имеет запись в этой таблице с именем таблицы и порядковой позицией. Попробуй это:

SELECT column_name, ordinal_position
FROM information_schema.columns 
WHERE table_name = 'table name';

это должно возвращать то же, что и в предыдущем примере.

3
добавлено
@AaronBertrand Спасибо за эту информацию. Не знал этого.
добавлено автор Mahmoud Gamal, источник
Правильное место IMHO - это sys.columns . INFORMATION_SCHEMA просто имитирует часть информации, но не все это ... sqlblog.com/blogs/aaron_bertrand/archive/2011/11/03/…
добавлено автор Aaron Bertrand, источник