Sé que se acepta la respuesta, pero en realidad hay una forma más sencilla de hacerlo, si lo único que debe hacer es seleccionar el valor del nodo. Solo usa *
como nombre de espacio de nombres:
SELECT MessageXml
, MessageXml.value('(/*:Envelope/*:Body/*:FetchRequest/*:Contract/*:TransactionId)[1]'
, 'varchar(max)')
FROM dbo.Message