Как проверить, что вся хранимая процедура в порядке в SQL-сервере, если я отбрасываю таблицу или поля?
Пара способов, которые приходят на ум
Он не поймает все (динамический SQL или с задержкой объекты), но это может быть полезно - вызовите sp_refreshsqlmodule для всех хранимых процедур, не связанных со схемой (вы можете вызвать его раньше, чтобы убедиться, что зависимости обновлены, а затем запросить зависимости или вызвать его позже и посмотреть, не сломано ли что-нибудь):
DECLARE @template AS varchar(max)
SET @template = 'PRINT ''{OBJECT_NAME}''
EXEC sp_refreshsqlmodule ''{OBJECT_NAME}''
'
DECLARE @sql AS varchar(max)
SELECT @sql = ISNULL(@sql, '') + REPLACE(@template, '{OBJECT_NAME}',
QUOTENAME(ROUTINE_SCHEMA) + '.'
+ QUOTENAME(ROUTINE_NAME))
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
EXEC (
@sql
)