Como faço para buscar várias colunas para usar em um loop de cursor?

Quando tento executar o seguinte snippet SQL dentro de um loop de cursor,

set @cmd = N'exec sp_rename ' + @test + N',' +
           RIGHT(@test,LEN(@test)-3) + '_Pct' + N',''COLUMN'''

Eu recebo a seguinte mensagem

Msg 15248, nível 11, estado 1, procedimento sp_rename, linha 213
O parâmetro@objname é ambíguo ou o reivindicado@objtype (COLUNA) está errado.

O que está errado e como conserto? Eu tentei envolver o nome da coluna entre colchetes[]e aspas duplas"" como alguns dos resultados da pesquisa sugeridos.

Editar 1 -

Aqui está o roteiro inteiro. Como faço para passar o nome da tabela para o renomear sp? Não sei como fazer isso, pois os nomes das colunas estão em uma das muitas tabelas.

BEGIN TRANSACTION

declare @cnt int
declare @test nvarchar(128)
declare @cmd nvarchar(500) 
declare Tests cursor for
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'pct%' AND TABLE_NAME LIKE 'TestData%'

open Tests
fetch next from Tests into @test
while @@fetch_status = 0
BEGIN
  set @cmd = N'exec sp_rename ' + @test + N',' + RIGHT(@test,LEN(@test)-3) + '_Pct' + N', column' 

  print @cmd

  EXEC sp_executeSQL @cmd

  fetch next from Tests into @test
END

close Tests 
deallocate Tests


ROLLBACK TRANSACTION
--COMMIT TRANSACTION

Edit 2 - O script é projetado para renomear colunas cujos nomes correspondem a um padrão, neste caso com um prefixo "pct". As colunas ocorrem em uma variedade de tabelas no banco de dados. Todos os nomes de tabelas são prefixados com "TestData".

questionAnswers(1)

yourAnswerToTheQuestion