XML をテーブル変数に分割し、各ノードを個別に置き換えてから、再度組み合わせることができます。
declare @xml xml = '<a abb="122"> <b></b> </a> <a abb="344"> <b></b> </a>' declare @T table (XMLCol xml) insert into @T select a.query('.') from @xml.nodes('a') a(a) update @T set XMLCol.modify('replace value of (/a/@abb)[1] with 888') set @xml = (select XMLCol as [*] from @T for xml path(''))
プレ>