Non è una risposta diretta a questa domanda, ma a chiunque tenti di eseguire l'escape di stringhe xml in TSQL, ecco una piccola funzione che ho scritto:
CREATE FUNCTION escapeXml
(@xml nvarchar(4000))
RETURNS nvarchar(4000)
AS
BEGIN
declare @return nvarchar(4000)
select @return =
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(@xml,'&', '&')
,'<', '<')
,'>', '>')
,'"', '"')
,'''', ''')
return @return
end
GO