Какой самый простой и надежный способ переименования таблиц и столбцов базы данных в SQL Server 2008 r2? Мы закончили разработку и по некоторым причинам нам необходимо переименовать некоторые таблицы и несколько столбцов.
Является ли использование синонимов хорошим способом сделать это? К каким подводным камням мы должны быть готовы? Помогает ли это в изящном переименовании колонок?
У нас есть много скриптов, связанных с этими таблицами, а также на них ссылаются в приложении разработчики .net.
Ответы:
Я думаю, что подход зависит от того, являются ли приложения живыми или вы все еще тестируете.
Для таблиц самый безопасный подход - создать синоним с новым именем. Таким образом, вы можете менять приложения по одному (или даже по одной ссылке за раз), не изменяя все сразу. Вам не нужно отбрасывать синоним и переименовывать таблицу до тех пор, пока вы не будете уверены, что все изменения на месте.
Для столбцов это немного сложнее. Вместо этого вы можете создать синонимы, которые указывают на представление, но не все представления будут обязательно обновляться в зависимости от базовой таблицы. В качестве простого примера:
Затем, как и выше, когда вы изменили все ссылки на столбцы и новое имя таблицы, просто:
Если приложение не является активным и все еще проходит тестирование, просто переименуйте столбцы и исправьте то, что ломается после глобального поиска и замены (или интеллектуального рефакторинга с использованием SSDT, RedGate и т. Д.) С помощью кода / процедур приложения и т. Д.
Если приложение работает в режиме реального времени, вам нужно будет действовать более осторожно.
источник
Ну, есть много подводных камней, с которыми вы можете столкнуться при изменении названия таблиц и столбцов. Любой другой код SQL или приложения, который их вызывает, должен быть переименован, чтобы соответствовать, или он не будет работать. Redgate делает несколько довольно хороших инструментов, которые могут пройти и внести все изменения в зависимые SQL veiws / functions / sprocs. Самый большой совет, который я могу вам дать, - это сначала выполнить эти изменения в среде DEV и TEST TEST TEST, чтобы убедиться, что вы исправили код везде.
источник