SQL Server 2008: невозможно вставить новый столбец в среднее положение и изменить тип данных - PullRequest
5 голосов
/ 25 мая 2011

Моя ОС - Windows Server 2008.

Я уже установил SQL Server Express 2008.

У меня есть несколько проблем:

  1. Я не могувставить новый столбец в средней позиции.Если я вставлю последний, я могу сохранить дизайн таблицы.
  2. Я могу изменить имя столбца, но не могу изменить тип данных.

Я получил сообщение об ошибке: Сохранение изменений не разрешено.Внесенные вами изменения требуют удаления и повторного создания следующих таблиц.Вы внесли изменения в таблицу, которую нельзя воссоздать, или включили опцию Запретить сохранение изменений, для которых требуется пересоздание таблицы.

Пример:

У меня есть ID, Name, Phone,и Status столбцы.Я не могу добавить Address между Name и Phone.

Но я могу добавить Address, если я поставлю его после Status.

Есть ли способ?чтобы решить эту проблему?

Спасибо раньше.

Ответы [ 4 ]

20 голосов
/ 25 мая 2011

В Инструментах SSMS -> Параметры -> Дизайнеры вам необходимо снять флажок «Запретить сохранение изменений, которые требуют пересоздания таблицы», чтобы разрешить вам сделать это в SSMS.

Это перестроит таблицу и, как правило, не будет стоить хлопот, если таблица вообще большая и сделает развертывание в производство более сложным.

Если есть столбцы, которые по логике вы бы предпочли располагать рядом друг с другом, чтобы упростить написание запросов, вы можете создать представление с желаемым порядком столбцов.

9 голосов
/ 25 мая 2011

Порядок столбцов не имеет значения ни в конструкторе, ни в sys.columns.

На диске будет одинаковым независимо от: Внутри механизма хранения - анатомия записи .

Также не дает выигрыша в производительности.

0 голосов
/ 26 мая 2011

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

0 голосов
/ 25 мая 2011

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

Подумайте, не имеет значения порядок столбцов.

...