Hai bisogno delle parentesi exec (@sql)
SQL Server cercherà una stored procedure del nome in @sql
variabile senza questo e lamentarsi Could not find stored procedure 'select x, y from z'.
Se stai usando l'SQL dinamico Vedi La maledizione e le benedizioni dell'SQL dinamico per un buon articolo sull'argomento.