Проблема с изменением порядка столбцов в таблице (SQL Server 2008)
-
06-09-2019 - |
Вопрос
Когда я пытаюсь изменить этот список столбцов:
Nombre
Imagen
Descripcion
Activo
IdLineaProducto
в это (IdLineaProducto является первым)
IdLineaProducto
Nombre
Imagen
Descripcion
Activo
SQL Server Management Studio говорит, что сохранять изменения запрещено, потому что таблица должна быть удалена и воссоздана заново (на испанском языке ...).Я мог бы сделать это в SQL Server 2005, но не в SQL Server 2008.
То же самое происходит и в других ситуациях, например, при попытке преобразовать столбец int, не являющийся идентификатором, в identity.Почему это происходит?Как я могу решить эту проблему?Может быть, какая-то неправильно настроенная проблема?Какая-то новая функция в SQL Server?
Решение
Я нашел тот самый решение этой проблемы.
Это сделано специально и может быть быстро исправлено в Management Studio, сняв флажок со свойства.Чтобы исправить это в Management Studio, перейдите в раздел Инструменты -> Параметры затем перейдите на страницу конструктора и снимите флажок "Запретить сохранение изменений для этого требуется воссоздание таблицы ".
Остерегайтесь, что это может иметь нежелательные последствия, например, потеря данных в других таблицах, связанных с этим.
Другие советы
Именно так это и работает...вы можете добавлять столбцы только в конец, если только вы DROP
это и CREATE
это (обычно копирование данных наружу и обратно, с чем может помочь IDE).Но почему вы хотите изменить порядок?Даже если это не идеально, ваш SELECT
etc может справиться с этим...т. е.
SELECT IdLineaProducto, Nombre, Imagen, Descripcion, Activo
FROM TheTable
...
(редко бывает хорошей идеей просто использовать SELECT *
)
Повторно в IDENTITY
;опять же, это фундаментально для столбца, хотя в этом случае вы могли бы скопировать данные, DROP
колонну, и повторно-ADD
столбец в виде IDENTITY
(с правой стороны) и скопируйте его обратно, но тогда у вас возникнут дополнительные сложности с IDENTITY INSERT
и тот SEED
значение (чтобы вы не пытались получить дубликаты существующих идентификационных значений).