Eu acho que a abordagem depende se os aplicativos estão ativos ou se você ainda está testando.
Para tabelas, a abordagem mais segura é criar um sinônimo usando o novo nome. Dessa forma, você pode alterar os aplicativos, um de cada vez (ou mesmo uma referência de cada vez), sem precisar alterar todos eles de uma vez. Você não precisa descartar o sinônimo e renomear a tabela até ter certeza de que possui todas as alterações.
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;
Para colunas, é um pouco mais complicado. Você pode criar sinônimos que apontam para uma visualização, mas nem todas as visualizações serão necessariamente atualizáveis, dependendo da tabela base. Como um exemplo simples:
CREATE VIEW dbo.vNewName
AS
SELECT Column1, NewColumnName = OldColumnName
FROM dbo.OldName;
CREATE SYNONYM dbo.NewName FOR dbo.vNewName;
Então, como acima, quando você tiver alterado todas as referências a colunas e o novo nome da tabela, simplesmente:
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 o aplicativo não estiver ativo e ainda estiver passando por testes, renomeie as colunas e corrija o que quebra após uma pesquisa global e substitua (ou refator inteligente usando SSDT, RedGate, etc.) por meio de códigos / procedimentos do aplicativo etc.
Se o aplicativo estiver ativo, será necessário avançar um pouco mais cuidadosamente.