Вы можете использовать sys.sql_dependencies
, чтобы узнать, от каких столбцов и таблиц зависит SP (помогает, если вы не делаете SELECT *
в своих SP). Это поможет вам получить список кандидатов как минимум:
referenced_major_id == the OBJECT_ID of the table
referenced_minor_id == the column id: COLUMNPROPERTY(referenced_major_id,
COLUMN_NAME,
'ColumnId')
Возможно, вам придется использовать sp_refreshsqlmodule
, чтобы обеспечить актуальность зависимостей, чтобы это работало. т. е. если вы меняете представление, вам нужно sp_refreshsqlmodule
для каждого не привязанного к схеме модуля (очевидно, что привязанные к схеме модули не допускают каких-либо изменений, лежащих в основе изменений, - но вы получите ошибку, если вы вызовете sp_refreshsqlmodule
для объекта, привязанного к схеме), который зависит от этого представления. Вы можете автоматизировать это, вызвав 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