Il s'agit d'un bogue dans SQL Server 2008.Utilisez
insert @columns
select ColumnNames.value('.', 'nvarchar(300)') name
from @xColumns.nodes('/columns/name') T1(ColumnNames)
OPTION (OPTIMIZE FOR ( @xColumns = NULL ))
Cette solution de contournement provient d'un élément sur le Site Microsoft Connect qui mentionne également un correctif pour ce problème Eager Spool / XML Reader est disponible (sous traceflag 4130).
La raison de la régression des performances est expliquée dans un élément de connexion différent