Вопрос по sql-server-2008, sql, sql-server, tsql – SQL Server Management Studio - как изменить тип поля без удаления таблицы

21

В SQL Server Management Studio при изменении существующего поля в режиме конструктора изDECIMAL (16,14) вDECIMAL (18,14) это не позволит мне сохранить без удаления всей таблицы и всех ее данных.

Можно ли изменить тип поля после заполнения базы данных записями?

+1 @Spark: отредактировал ваш вопрос, чтобы изменитьbig_decimal вdecimal. Rango
Какую ошибку вы получаете при использовании дизайнера? Rango
Что такоеbig_decimal? Martin Smith
@ Спарк - А, ладно. Не был уверен, что это был какой-то пользовательский CLR UDT или что-то в этом роде. Martin Smith
@ Мартин Смит плохой пример извините. Prometheus

Ваш Ответ

3   ответа
-2

& GT; параметры & gt; & gt; Инструменты базы данных & gt; & gt; дизайнер таблиц и баз данных & gt; & gt; параметры таблицы и диаграммы после этого сделайте то же самое с вышеуказанным решением

54

жения вашей цели:

ALTER TABLE dbo.YourTableNameHere
ALTER COLUMN YourColumnNameHere DECIMAL(18, 14) 

и ты должен быть в порядке.

Визуальный дизайнер выбирает очень осторожный путь создания таблицы с новой структурой и последующего копирования всех данных - это работает, но это утомительно. Обычно, если вы не усекаете столбец (укорачиваете его), вы определенно можете изменить тип данных столбца "на месте". используя оператор T-SQL.

Кроме того: по умолчанию разработчик SSMS очень осторожен и не допускает никаких изменений, которые требуют циклического удаления и повторного создания таблицы. Вы можете отключить эту дополнительную осторожность вTools > Options а затем в этом диалоговом окне:

enter image description here

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

Error: User Rate Limit ExceededALTER TABLE dbo.YourTableNameHere ALTER COLUMN YourColumnNameHere DECIMAL(18, 14) NOT NULLError: User Rate Limit ExceededonlyError: User Rate Limit ExceededNULLError: User Rate Limit Exceeded
Error: User Rate Limit ExceededNOTError: User Rate Limit Exceeded
Error: User Rate Limit Exceededdecimal....
Error: User Rate Limit Exceeded Prometheus
Error: User Rate Limit Exceeded
0

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

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