#sql-server
#sql-сервер
Вопрос:
У меня есть таблица с примерно 1,5 миллионами записей, и я хочу изменить тип данных для одного столбца с decimal(18, 2)
на decimal(18, 4)
(добавить два знака после запятой). Если бы я попытался с этим кодом:
ALTER TABLE MyTable
ALTER COLUMN MyColumn1 decimal(18, 4) NO NULL
GO
Однако SQL Server не позволяет этого, поскольку существует более 20 представлений, индексов и процедур, зависящих от этой таблицы:
ИЗМЕНИТЬ ТАБЛИЦУ ИЗМЕНИТЬ СТОЛБЕЦ MyColumn1 не удалось, поскольку один или несколько объектов обращаются к этому столбцу.
Есть ли способ для меня добавить десятичные разряды без предварительного удаления зависимостей? Поскольку эта база данных находится в режиме реального времени, мы не можем позволить себе некоторое время оставаться без какой-либо структуры.
Комментарии:
1. Я не знаю другого способа, кроме удаления индексов, а затем добавления их обратно позже. Но, вероятно, вы можете справиться с этим довольно быстро, и проблема с индексом / представлением может привести к меньшей задержке, чем вы думаете.
2. Вы используете режим разработки таблицы из SSMS или пытаетесь изменить тип decimal (20,4) из-за того, что длина десятичных знаков всегда равна длине целого числа
3. @AdnanAhmedAnsari Да, я пробовал это раньше. Безуспешно.