Je pense que l'approche dépend de si les applications sont en direct ou si vous testez toujours.
Pour les tableaux, l'approche la plus sûre consiste à créer un synonyme en utilisant le nouveau nom. De cette façon, vous pouvez modifier les applications une par une (ou même une référence à la fois), sans avoir à les modifier toutes en même temps. Vous n'avez pas besoin de supprimer le synonyme et de renommer la table tant que vous n'êtes pas sûr d'avoir toutes les modifications en place.
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;
Pour les colonnes, c'est un peu plus délicat. Vous pouvez créer des synonymes qui pointent vers une vue à la place, mais toutes les vues ne seront pas nécessairement actualisables en fonction de la table de base. Comme exemple simple:
CREATE VIEW dbo.vNewName
AS
SELECT Column1, NewColumnName = OldColumnName
FROM dbo.OldName;
CREATE SYNONYM dbo.NewName FOR dbo.vNewName;
Ensuite, comme ci-dessus, lorsque vous avez modifié toutes les références aux colonnes et le nouveau nom de table, simplement:
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;
Si l'application n'est pas en ligne et est toujours en cours de test, renommez simplement les colonnes et corrigez ce qui se casse après une recherche globale et remplacez (ou refactor intelligent à l'aide de SSDT, RedGate, etc.) via le code / les procédures d'application, etc.
Si l'application est en direct, vous devrez avancer un peu plus délicatement.