Подумайте про створення нової таблиці з тією ж схемою плюс стовпець rowversion і додайте подання на обидві таблиці, що робить об'єднання всіх. Запропонуйте людям використовувати подання та записувати замість тригерів проти базових таблиць та подань.
Вставки слід надсилати до нової таблиці, оновлення повинні переміщувати дані до нової таблиці, а до обох таблиць слід застосовувати видалення.
Потім виконайте пакетні переміщення у фоновому режимі, переміщаючи стільки записів за один раз, скільки можна перейти до нової таблиці. У вас все ще можуть виникнути проблеми з валютою, поки це триває, і деякі химерні плани виконання, але це дозволяє залишатися в Інтернеті, поки відбувається рух.
В ідеалі ви починаєте цей процес в п’ятницю вдень, щоб мінімізувати вплив на кінцевих користувачів, і намагаєтеся виконати це до ранку в понеділок. Після того, як він буде встановлений, ви можете змінити вигляд, щоб вказувати лише на нову таблицю, і пластові плани виконання виконуються. В ідеалі.
Щоб уникнути запуску тригерів під час міграції даних партіями, подивіться кількість рядків у видалених / вставлених таблицях на тригері та пропустіть дії, якщо вони близькі до кількості рядків у вашій партії.
Зрештою, Майкл вирішив пропустити подання (а не видаляти з початкової таблиці), щоб отримати більш стабільні плани. У торгівлі було по суті два примірники таблиці. Він перетворив це на серію дописів у блозі .