Короткий ответ, похоже, что другого пути нет.
Удаление и повторное создание сборочных и связанных функций - это единственный способ для механизма базы данных проверить, что ваши интерфейсы действительны (и на них имеются действительные ссылки).
EDIT
Метаданные о взаимосвязи между сборками и ссылочными функциями хранятся в таблице sys.assembly_modules
:
SELECT *, OBJECT_NAME(OBJECT_ID) FROM sys.assembly_modules
Сгенерировать сценарии удаления из этих метаданных довольно просто:
DECLARE @assembly_name sysname
SET @assembly_name = '<your assembly name>'
SELECT 'drop function ' + OBJECT_NAME(OBJECT_ID)
FROM sys.assemblies AS a
JOIN sys.assembly_modules AS am
ON am.assembly_id = a.assembly_id
WHERE a.name = @assembly_name
SELECT 'drop assembly ' + @assembly_name
Генерировать скрипты создания намного сложнее, потому что нет способа узнать, изменился ли интерфейс, или расположение сборки dll для загрузки.