Похоже, что эта стратегия сработает: убрать ограничения, изменить столбец из-под них (изменения типа, имя останется прежним), а затем воссоздать ограничения довольно элегантно.
Является ли целью в конечном итоге отбросить столбцы GUID? Если это так, вы на самом деле не освободите пространство, если таблицы не будут скопированы или перестроены, поэтому, возможно, следующая настройка:
...
4. «Изменить данные», обновить таблицу x, установить NewPrimaryKey = y, где OldPrimaryKey = z
5. Отбросить исходный первичный ключ до 'oldprimarykey'
6. Переименуйте столбец «NewPrimaryKey» в «PrimaryKey»
7. Сценарий возврата всех индексов и fkeys (создание кластерных индексов «перестраивает» таблицы)
8. Для всех таблиц, которые не имеют кластеризованных индексов, сделайте что-нибудь, чтобы убедиться, что они восстановлены и их пространство восстановлено (такая сборка, а затем удаление кластеризованного индекса)
Само собой разумеется, протестируйте его на устройстве разработчика перед запуском в Production!