«Новый» способ, как уже упоминалось, не имеет ничего общего с SQL 2008. EXEC был доступен довольно давно.Это также - в большинстве случаев - очень плохая идея.
Вы теряете параметризацию - это означает, что вы теперь уязвимы для SQL-инъекции .Это некрасиво и подвержено ошибкам.Это менее эффективно.И он создает новую область выполнения - то есть не может совместно использовать переменные, временные таблицы и т. Д. - из своего вызываемого хранимого процесса.
sp_executesql - другой (и предпочтительный) метод выполнениядинамический SQL.Это то, что ваши клиентские приложения используют, и он поддерживает параметры - что решает наиболее очевидную проблему EXEC.Тем не менее, он также имеет очень ограниченные варианты использования в хранимой процедуре.О единственном искупительном использовании, когда вам нужно динамическое имя таблицы или столбца.T-SQL не поддерживает переменную для этого - поэтому вам нужно использовать sp_executesql.Количество раз, которое вам нужно или нужно делать, это очень низкое .
Итог - вам лучше забыть, что вы когда-либо слышали об этом.