Как остановить замену «SELECT *» в списке столбцов в SQL Server Management Studio?

SQL Server Mgmt Studio сводит меня с ума.

Если я создаю представление и выбираю '*' из таблицы, это все ОК, и я могу сохранить вид. Анализ SQL для представления (например, путем создания сценария CREATE) показывает, что «SELECT *» действительно сохраняется в SQL представления.

Но как только я снова открываю представление с помощью графического интерфейса пользователя (щелкните правой кнопкой мыши> изменить) SELECT * заменяется списком столбцов всех столбцов в таблице.

Как я могу остановить Management Studio от этого? Я хочу, чтобы мой «SELECT *» оставался именно таким.

Возможно, именно из-за сложностей с поиском «SELECT *» я не смог найти что-либо, относящееся к этому удаленно (я поставил это в двойные кавычки).

Пожалуйста, у меня большой опыт в Transact-SQL, поэтому, пожалуйста, НЕ читайте мне лекцию о том, почему я не должен использовать SELECT *. Я знаю все плюсы и минусы, и я иногда использую это. Это особенность языка, и, как и все языковые функции, могут быть использованы для добра или зла (я категорически не согласен с тем, что его никогда не следует использовать).

Редактировать: Я даю Марку ответ, так как кажется, что невозможно повернуть это поведение отключено. Проблема считается закрытой. Отмечу, что Enterprise Manager не делал ничего подобного. Обходной путь - отредактировать SQL как текст или перейти к продукту, отличному от Managment Studio. Или постоянно редактируйте список столбцов и заменяйте * каждый раз, когда вы редактируете представление. Вздох.

5
задан Ben McIntyre 8 March 2010 в 06:03
поделиться

3 ответа

Когда SQL Server Mgmt Studio создает представление, я предполагаю, что они расширяют * до полного списка столбцов, которые присутствуют в базовых таблицах в это конкретное время, именно по этой причине: что, если один из изменения базовых таблиц? Вы хотите, чтобы новые столбцы просто отображались в каждом представлении, которое ссылается на эту таблицу? Шутки в сторону???

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

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

И я не думаю, что в Mgmt Studio есть какие-либо настройки чтобы отключить это поведение, извините.

3
ответ дан 14 December 2019 в 13:33
поделиться

Попробуйте любое из этих действий: они являются альтернативой использованию графического интерфейса пользователя и могут быть настроены как фрагменты с помощью сочетаний клавиш:

select view_definition 
from information_schema.views
where table_name = 'viewname'

или

exec sp_helptext 'viewname'

В результатах будет сохранен «select *». (Протестировано)

0
ответ дан 14 December 2019 в 13:33
поделиться

Не используйте редактор графического интерфейса.

Вместо этого используйте редактор T-SQL. Это можно сделать, выбрав «Просмотр сценария как» -> «ALTER to» -> «Новое окно запроса» из контекстного меню.

3
ответ дан 14 December 2019 в 13:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: