Я думаю, что подход зависит от того, являются ли приложения живыми или вы все еще тестируете.
Для таблиц самый безопасный подход - создать синоним с новым именем. Таким образом, вы можете менять приложения по одному (или даже по одной ссылке за раз), не изменяя все сразу. Вам не нужно отбрасывать синоним и переименовывать таблицу до тех пор, пока вы не будете уверены, что все изменения на месте.
CREATE SYNONYM dbo.NewName FOR dbo.OldName;
-- change app to point to dbo.NewName;
-- once all of your changes have been tested:
BEGIN TRANSACTION;
DROP SYNONYM dbo.NewName;
EXEC sp_rename N'dbo.OldName', N'NewName', N'OBJECT';
COMMIT TRANSACTION;
Для столбцов это немного сложнее. Вместо этого вы можете создать синонимы, которые указывают на представление, но не все представления будут обязательно обновляться в зависимости от базовой таблицы. В качестве простого примера:
CREATE VIEW dbo.vNewName
AS
SELECT Column1, NewColumnName = OldColumnName
FROM dbo.OldName;
CREATE SYNONYM dbo.NewName FOR dbo.vNewName;
Затем, как и выше, когда вы изменили все ссылки на столбцы и новое имя таблицы, просто:
BEGIN TRANSACTION;
DROP SYNONYM dbo.NewName;
DROP VIEW dbo.vNewName;
EXEC sp_rename N'dbo.OldName', N'NewName', N'OBJECT';
EXEC sp_rename N'dbo.NewName.OldColumnName', N'NewColumnName', N'COLUMN';
COMMIT TRANSACTION;
Если приложение не является активным и все еще проходит тестирование, просто переименуйте столбцы и исправьте то, что ломается после глобального поиска и замены (или интеллектуального рефакторинга с использованием SSDT, RedGate и т. Д.) С помощью кода / процедур приложения и т. Д.
Если приложение работает в режиме реального времени, вам нужно будет действовать более осторожно.