Самая большая проблема с совместным использованием временных таблиц заключается в том, что они вводят внешние зависимости в процедуру, которая может быть не очевидна на первый взгляд. Скажем, у вас есть какая-то процедура p1, которая вызывает процедуру p2, а временная таблица # t1 используется для передачи информации между двумя процедурами. Если вы хотите запустить p2 изолированно, чтобы увидеть, что он делает, вы должны создать «жгут», который определяет # t1, прежде чем вы сможете его запустить. Использование временных таблиц в T-SQL часто эквивалентно использованию глобальных переменных в других языках - не рекомендуется, но иногда неизбежно.
SQL Server 2008 теперь имеет табличные параметры, но Microsoft решила сделать их доступными только для чтения в этом выпуске. Тем не менее, это означает, что вам не нужно использовать временные таблицы в некоторых сценариях, в которых вы были раньше.
Мой совет: используйте их, если нужно, но тщательно документируйте их использование. Если у вас есть какой-то процесс, который зависит от временной таблицы, запустите ее в комментарии.