resposta do gbn é melhor - mas quando você tem SCHEMABINDING, isso geralmente impede que você faça alterações subjacentes sem primeiro remover SCHEMABINDING e substituí-lo ao recriar o módulo. Você não pode usar SCHEMABINDING se seu objeto fizer referência a objetos fora do banco de dados.
Se essa dificuldade for tão grande que você não deseja ou não pode usar SCHEMABINDING, use sp_refreshsqlmodule em algum tipo de processo regular que você executa para verificar se há erros em seus módulos SQL antes que eles sejam realmente usados (pode ser executado em qualquer exibição não vinculada a esquema, UDF, proc armazenado etc.) é seu amigo.
Você pode usar as duas técnicas juntas - você não pode (e não há necessidade de) executar sp_refreshsqlmodule em objetos vinculados ao esquema.
por exemplo, você só pode executá-lo nestes módulos:
SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE (
OBJECTPROPERTY(OBJECT_ID(QUOTENAME(ROUTINE_SCHEMA) + '.' + QUOTENAME(ROUTINE_NAME)), N'IsSchemaBound') IS NULL
OR OBJECTPROPERTY(OBJECT_ID(QUOTENAME(ROUTINE_SCHEMA) + '.' + QUOTENAME(ROUTINE_NAME)),
N'IsSchemaBound') = 0
)