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)')