Necesita paréntesis exec (@sql)
SQL Server buscará un procedimiento almacenado del nombre en @sql
variable sin esto y quejarse Could not find stored procedure 'select x, y from z'.
Si utiliza SQL dinámico, consulte La maldición y las bendiciones del SQL dinámico por un buen artículo sobre el tema.