gbn の回答 が最適ですが、SCHEMABINDING を使用している場合、最初に SCHEMABINDING を削除してからモジュールを再作成するときにそれを置き換えないと、基本的な変更を行うことができないことがよくあります。オブジェクトがデータベース外のオブジェクトを参照している場合、SCHEMABINDING は使用できません。
この難しさがあまりにも大きく、SCHEMABINDING を使用したくない、または使用できない場合は、 sp_refreshsqlmodule 実際に使用する前に SQL モジュールのエラーをチェックするために実行するある種の通常のプロセス (スキーマにバインドされていないビュー、UDF、ストアド プロシージャなどで実行できます) はあなたの友人です。
両方の手法を一緒に使用できます。スキーマバインドされたオブジェクトに対して sp_refreshsqlmodule を実行することはできません (実行する必要もありません)。
たとえば、これらのモジュールでのみ実行できます:
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 )コード> プレ>