1

Моя существующая база данных находится на SQL Server 2005 - версии 9.0.5000. Миграция на SQL Server 2008 R2Alter Обобщенная таблица столбцов DataType

У нас есть огромная таблица из 500 миллионов рядов данных. Столбец PriceListDate определяется как varchar(8) и является частью составного первичного ключа. Хуже того, таблица разделена на этот столбец.

Поскольку теперь есть возможность переделать БД, я размышляю об изменении типа данных до integer для этого столбца. Однако, кажется, нет простого способа сделать это, но для создания другой таблицы с новым типом данных, переноса данных, а затем удаления старой таблицы и схемы разделов и функций.

Любые указатели на то, что смотреть с помощью этого подхода? Или есть альтернативный, лучший подход?

Радж

+0

Почему бы вам не преобразовать дату в тип даты? Существует большая поддержка для проведения расчетов даты, например, датированной функции, когда столбец является датой, датой и т. Д. Какая проблема с текущей настройкой? Является ли эта база данных хранилищем данных (где даты, представленные в виде целых чисел, более распространены)? –

+0

@MichaelHarmon Изменение типа данных первичного (и моего предположения представляет собой закрытый объект) потребует, чтобы размер tempdb составлял 1-2 размера таблицы +, он будет регистрироваться: даже минимальное ведение журнала займет много места. – Stoleg

+0

Каков размер таблицы, есть ли какие-либо другие изменения в этой таблице? – Stoleg

ответ

1

Вот некоторые мысли:

Если оставить как есть вы можете иметь эту старую таблицу в виде таблицы истории, создать еще одну таблицу с новым layoyut для новых данных и создать представление и/или SP для доступа к ним и к одному из них.

Если принято решение об изменении типа данных: - Поскольку процесс должен контролироваться, это должно быть сделано партиями в любом случае - Было бы неплохо использовать существующее разбиение.

мой solultion будет: Set 3 таблицы: Old_Big_Table, Temp_table (со старой структурой, индексы, перегородки) и New_Table (с новой структурой, на другую схему разбиения и функции)

Для каждого раздела:

  1. Переключатель 1 раздел для Temp_table
  2. индексы падения
  3. Изменить тип данных
  4. Создание индекса эс как в новой компоновке на новый PS и PF
  5. Переключение раздела в New_table
  6. Снижения новых индексов на Temp_table
  7. Создание старых индексов Temp_table на старом PS и PF
  8. Дополнительно: журнал результат этой итерации к Log_table

На шаге 7 нет необходимости создавать старый индекс на любых PS и PF. Поскольку структура индексов одинакова, этого будет достаточно.

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