У нас есть база данных SQL Server 2008 с таблицей, содержащей более 1,4 миллиарда записей. Из-за корректировок системы координат нам необходимо расширить тип данных координатного столбца от decimal(18, 2)
до decimal(18, 3)
.Изменение типа данных столбца в SQL Server
Мы пробовали несколько вещей, но все закончилось исключением (транзакционный лог заполнен) примерно через 14 часов после выполнения.
Это то, что мы пытались:
Alter Таблица
ALTER TABLE Adress ALTER COLUMN Coordinate decimal(18, 3) NULL
Дизайнер
- Uncheck
Tools > Options > Designer > Prevent saving changes that require table re-creation
- Open Designer
- Изменить тип данных столбца
decimal(18, 3)
Right-click > Generate Change Script...
- Uncheck
Что делает этот сценарий, создает новую таблицу с новым типом данных, копируя старые данные в новую таблицу, отбросить старую таблицу и переименовать новую таблицу.
К сожалению, обе попытки приводят к полному исключению журнала транзакций после 14 часов исполнения.
Я думал, что изменение типа данных через ALTER TABLE... ALTER COLUMN...
изменяет только метаданные и должно быть закончено в течение (милли) секунд?
- Вы знаете какой-либо другой метод, который я мог бы попробовать?
- Почему мои попытки (особенно # 1) требуют много времени?
Заранее спасибо
** Некоторые ** изменения для таблиц может быть выполнено только при изменении метаданных. Ни в коем случае не меняется * все *, и тот, который вы выполняете, требует обновления каждой строки. Итак, я думаю, вам нужно больше пространства журналов. –
Попробуйте 'select CONVERT (двоичный код (8), CONVERT (десятичный (18,3), 1,5)), CONVERT (двоичный (8), CONVERT (десятичный (18,2), 1,5))', и вы увидите, что * представление * совершенно иное. –
A. Насколько велико используемое пространство, используемое таблицей (отчеты об использовании диска)? B. И сколько дискового пространства у вас есть для вашего эксперимента? Если B> A, вы можете рассмотреть возможность создания новой таблицы с нуля и bcping-данных на нее (что может выполняться партиями и минимизировать использование журнала транзакций). В качестве побочного эффекта вы получите более компактную и менее фрагментированную организацию данных. Вы также должны использовать сжатие, если оно еще не используется – Jan