Você precisa de parênteses
exec (@sql) O SQL Server procurará um procedimento armazenado do nome no
@sql variável sem isso e reclamar Could not find stored procedure 'select x, y from z'. Se você estiver usando SQL dinâmico Veja A maldição e bênçãos do SQL dinâmico para um bom artigo sobre o tema.