Динамический SQL, безусловно, самый простой способ сделать это. Альтернативой является параметризованный SQL, но для этого потребуется, чтобы ваши пользователи определяли и устанавливали параметры отдельно от T-SQL.
Вы можете просто отправить строку T-SQL на SQL Server, используя объект SqlCommand; нет никакой реальной выгоды в том, чтобы обернуть его в EXEC или что-либо еще, как в ссылке, которую вы предоставили. Вы можете выполнять обработку исключений на стороне .NET.
Кроме того, если вы хотите поддерживать пакет команд, имейте в виду, что SqlClient и его друзья не понимают «GO», что также не является настоящей командой T-SQL - вам нужно будет проанализировать ввод и разбить это в партии самостоятельно.
Я уверен, что вы понимаете, что при этом существует большая угроза безопасности, и это, как правило, не рекомендуется. Вы можете рассмотреть возможность использования строки подключения, которая указывает пользователя с ограниченными разрешениями, чтобы помочь контролировать / ограничивать его доступ.