SQL Server Mgmt Studio сводит меня с ума.
Если я создаю представление и выбираю '*' из таблицы, это все ОК, и я могу сохранить вид. Анализ SQL для представления (например, путем создания сценария CREATE) показывает, что «SELECT *» действительно сохраняется в SQL представления.
Но как только я снова открываю представление с помощью графического интерфейса пользователя (щелкните правой кнопкой мыши> изменить) SELECT * заменяется списком столбцов всех столбцов в таблице.
Как я могу остановить Management Studio от этого? Я хочу, чтобы мой «SELECT *» оставался именно таким.
Возможно, именно из-за сложностей с поиском «SELECT *» я не смог найти что-либо, относящееся к этому удаленно (я поставил это в двойные кавычки).
Пожалуйста, у меня большой опыт в Transact-SQL, поэтому, пожалуйста, НЕ читайте мне лекцию о том, почему я не должен использовать SELECT *. Я знаю все плюсы и минусы, и я иногда использую это. Это особенность языка, и, как и все языковые функции, могут быть использованы для добра или зла (я категорически не согласен с тем, что его никогда не следует использовать).
Редактировать: Я даю Марку ответ, так как кажется, что невозможно повернуть это поведение отключено. Проблема считается закрытой. Отмечу, что Enterprise Manager не делал ничего подобного. Обходной путь - отредактировать SQL как текст или перейти к продукту, отличному от Managment Studio. Или постоянно редактируйте список столбцов и заменяйте * каждый раз, когда вы редактируете представление. Вздох.
Когда SQL Server Mgmt Studio создает представление, я предполагаю, что они расширяют * до полного списка столбцов, которые присутствуют в базовых таблицах в это конкретное время, именно по этой причине: что, если один из изменения базовых таблиц? Вы хотите, чтобы новые столбцы просто отображались в каждом представлении, которое ссылается на эту таблицу? Шутки в сторону???
Я думаю, что Microsoft пытается ввести здесь «элемент наименьшего удивления» - ваше представление будет содержать те столбцы, которые присутствуют в момент создания представления - и так и останется, если вы явно и сознательно не измените это.
Я бы, например, не хотел, чтобы в моих представлениях внезапно появилось больше столбцов, чем раньше, при изменении базовой таблицы ... не так ли?
И я не думаю, что в Mgmt Studio есть какие-либо настройки чтобы отключить это поведение, извините.
Попробуйте любое из этих действий: они являются альтернативой использованию графического интерфейса пользователя и могут быть настроены как фрагменты с помощью сочетаний клавиш:
select view_definition
from information_schema.views
where table_name = 'viewname'
или
exec sp_helptext 'viewname'
В результатах будет сохранен «select *». (Протестировано)
Не используйте редактор графического интерфейса.
Вместо этого используйте редактор T-SQL. Это можно сделать, выбрав «Просмотр сценария как» -> «ALTER to» -> «Новое окно запроса» из контекстного меню.