Exactamente lo que dice:
'name1'
tiene un tipo de datos diferente a 'name' + CAST((rn+1) as varchar(255))
Prueba esto (no probado)
;with cte as
(
select 1 as rn, CAST('name1' as varchar(259)) as nm
union all
select rn+1,nm = 'name' + CAST((rn+1) as varchar(255))
from cte a where rn<10)
select * from cte
Básicamente, también debe asegurarse de que la longitud coincida. Para el bit recursivo, es posible que deba usar CAST('name' AS varchar(4))
si vuelve a fallar