Interroger le champ XML d'ELMAH

La table stock ELMAH_Error utilise un champ nText pour stocker une input Error. J'ai trouvé cela en ajoutant un champ de type XML; puis en ajoutant ce nouveau champ à l'instruction INSERT du SPROC qui remplit le champ; Je pourrais mieux utiliser la sortie d'ELMAH.

Maintenant, j'aimerais apprendre comment interroger des valeurs d'éléments spécifiques dans ce champ XML. Le document est structuré comme suit:

<error [...]> <serverVariables> <item name="ALL_HTTP"> <value ssortingng="..." /> </item> <item name="ALL_RAW"> <value ssortingng="..." /> </item> . . . </serverVariables> </error> 

Je dois pouvoir interroger la valeur d'éléments spécifiques en dessous.

Donc, je regarde un exemple de l'article 15seconds.com :

 SELECT MyXml.value('(/root/product[@id="304"]/name)[1]', 'nvarchar(30)') 

et j'essaie de faire correspondre ces valeurs à la structure de mon domaine – mais je ne peux pas. Par exemple

 select top 10 RealXML.value('(/error/serverVariables[@id="REMOTE_HOST"]/name)[0]', 'nvarchar(30)') 

où REMOTE_HOST est formaté:

 <item name="REMOTE_HOST"> <value ssortingng="55.55.55.55" /> </item> 

très appréciée

    Cela devrait fonctionner:

     select top 10 RealXML.value('(/error/serverVariables/item[@name="REMOTE_HOST"]/value/@ssortingng)[1]', 'nvarchar(30)') 

    Testé en utilisant ce qui suit:

     DECLARE @xml XML = ' <error> <serverVariables> <item name="ALL_HTTP"> <value ssortingng="..." /> </item> <item name="ALL_RAW"> <value ssortingng="..." /> </item> <item name="REMOTE_HOST"> <value ssortingng="55.55.55.55" /> </item> </serverVariables> </error> ' SELECT @xml.value('(/error/serverVariables/item[@name="REMOTE_HOST"]/value/@ssortingng)[1]','nvarchar(30)')