Penso che l'approccio dipenda dal fatto che le applicazioni siano attive o che tu stia ancora testando.
Per le tabelle, l'approccio più sicuro è quello di creare un sinonimo usando il nuovo nome. In questo modo puoi cambiare le app una alla volta (o anche un riferimento alla volta), senza doverle cambiare tutte in una volta. Non è necessario eliminare il sinonimo e rinominare la tabella fino a quando non si è certi di disporre di tutte le modifiche.
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;
Per le colonne, è un po 'più complicato. È possibile creare sinonimi che rimandano a una vista, ma non tutte le viste saranno necessariamente aggiornabili a seconda della tabella di base. Come semplice esempio:
CREATE VIEW dbo.vNewName
AS
SELECT Column1, NewColumnName = OldColumnName
FROM dbo.OldName;
CREATE SYNONYM dbo.NewName FOR dbo.vNewName;
Quindi, come sopra, quando hai cambiato tutti i riferimenti alle colonne e al nuovo nome della tabella, semplicemente:
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;
Se l'applicazione non è attiva e sta ancora eseguendo i test, basta rinominare le colonne e correggere ciò che si interrompe dopo una ricerca globale e sostituire (o refactor intelligente utilizzando SSDT, RedGate, ecc.) Tramite il codice / le procedure dell'app ecc.
Se l'applicazione è attiva, dovrai fare un passo un po 'più cauto.