Zapytanie XML tworzące nazwy pól bez znajomości nazw węzłów

Jeśli mam tabelę SQL SERVER 2012 zawierającą typ pola XML. Rekordy, które może zawierać, są następujące.

Uprościłem mój problem do następujących.

Rekord 1:

ID_FIELD='nn1'

XML_FIELD=
<KNOWN_NAME_1>
    <UNKNOWN_NAME1>Some value</UNKNOWN_NAME1>
    <UNKNOWN_NAME2>Some value</UNKNOWN_NAME2>
  ... Maybe more ...
</KNOWN_NAME_1>

Rekord 2:

ID_FIELD='nn2'

XML_FIELD=
<KNOWN_NAME_2>
  <UNKNOWN_NAME1>Some value</UNKNOWN_NAME1>
  <UNKNOWN_NAME2>Some value</UNKNOWN_NAME2>
  ... Maybe more unknown fields ...
</KNOWN_NAME_2>

Chcę wydrukować plik inny niż xml:

UNKNOWN_NAME1 | UNKNOWN_NAME2 | ETC
-----------------------------------
Some Value      Some value

Dla znanej wartości roota (tj. KNOWN_NAME_1)

To znaczy. Jeśli dodam wartości węzłów (których nie mam), mógłbym

SELECT
  XMLData.Node.value('UNKNOWN_NAME1[1]', 'varchar(100)') ,
  XMLData.Node.value('UNKNOWN_NAME2[1],  'varchar(100)')
FROM FooTable
  CROSS APPLY MyXmlField.nodes('//KNOWN_NAME_1') XMLData(Node)
  -- WHERE SOME ID value = 'NN1' (all XML records have a separate id)

Wszystko jest dobrze, ale chcę to zrobić dla wszystkich węzłów (nieznana ilość) bez znajomości nazw węzłów. Korzeń będzie zawierał tylko węzły, których nie dostanie głębiej.

Czy jest to możliwe w SQL?

Przyjrzałem się temu, ale wątpię, czy mogę uzyskać wystarczające prawa do jego wdrożenia.

http://architectshack.com/ClrXmlShredder.ashx

questionAnswers(1)

yourAnswerToTheQuestion