2009-06-10 2 views
1

Мне поручено изменить тип данных столбца таблицы от smallint до int для таблицы с 32 миллионами строк в ней. Требование состоит в том, чтобы иметь самый низкий простой (в основном, самый быстрый способ достижения этого). Мы используем SQL Server 2000.MS SQL Server самый быстрый способ изменения определения столбца

Пожалуйста, помогите!

ответ

4

Существует несколько вариантов, вы можете сделать онлайн-копию таблицы, а затем использовать sp_rename для ее переключения.

Другой способ - добавить новый столбец, заполнить его, а затем удалить старый столбец и переименовать новый столбец.

32-метровые ряды можно считать большими или малыми в зависимости от ширины строки.

+1

Я уверен, что бенчмаркинг покажет, что sp_rename будет самым низким вариантом простоя. –

+1

. Sp_rename будет быстрым, но для копирования таблицы может потребоваться очень много времени, если строки являются широкими, поэтому вам может потребоваться запустить обновите таблицу назначения до sp_rename. В версии in situ вы можете заполнять и обновлять любые измененные строки, а затем выполнять переименование столбца. Наверное, это действительно зависит от того, что считается простоем, а какое остальное окно обслуживания будет полностью зависеть от того, сколько активности происходит на столе. –

2

Независимо от того, что вы делаете, не используйте Enterprise Manager для изменения типа данных. То, что он будет делать, это создать целую новую таблицу, заполнить ее, переименовать старую таблицу, переименовать новую таблицу в имя старой таблицы и отбросить все это за одну неприятную транзакцию, блокирующую таблицу в течение нескольких часов.

Смежные вопросы