My solution was to force an intermediate result so that there is a break between SQL and XML queries. My code for LinqPad is as follows.
var all = from bm in mytable select new { name=bm.SPP_USER_ID, xml=(string)bm.SPP_BOOKMARKS_XML}; var docs = from x in all select XDocument.Parse(x.xml); var docs2 = docs.ToList(); // FORCE RESULT XNamespace ns = "http://acme/bookmarks"; var href = from h in docs2.Descendants(ns + "href") select h.Value;