Без дополнительных знаний о вашей схеме базы данных, разрешениях и т. д. и некоторого представления о вашей стратегии в отношении вашего приложения чрезвычайно трудно давать предписания. Как минимум, позволяет ли приложение работать в режиме только для чтения с заблокированными обновлениями таблицы?
На самом базовом уровне "Да" вы можете это сделать...
DENY INSERT, UPDATE, DELETE ON <table> TO <user>
однако невозможно сказать, как отреагирует ваше приложение. По моему опыту, большинство приложений будут разбрызгивать ошибки повсюду и кричать о кровавом убийстве, если вы сделаете это, возможно, даже повредив данные (непроверенные ошибки, плохое использование транзакций и т. д.). Редко (возможно, никогда) я не видел приложения, которое изящно переключалось в режим только для чтения, когда доступ к базе данных был не таким, как планировалось/ожидалось.
Так что ТЕСТ! Тестируйте, тестируйте, тестируйте в контролируемой непроизводственной среде, пока у вас не будет документированного процесса, поддерживающего ваши изменения.
Если ваши требования не допускают длительного простоя (или вообще не допускают отключения), существуют более сложные способы справиться с этим. Одной из мыслей было бы добавить триггер после вставки/после обновления для автоматического преобразования новых/обновленных записей в новое поле во время обслуживания небольших пакетов. Как только все данные будут преобразованы, переключите приложение на новое поле и удалите старое.