Запрос XML, создающий имена полей без знания имен узлов

Если у меня есть таблица SQL SERVER 2012, содержащая тип поля XML. Записи, которые это могло содержать, следующие.

Я упростил мою проблему до следующего.

Запись 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>

Запись 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>

Я хочу вывести не XML:

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

Для известного корневого значения (т.е. KNOWN_NAME_1)

То есть Если я добавлю новые значения узлов (которые я не использую), я мог бы

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)

Все хорошо, однако я хочу сделать это для всех узлов (неизвестное количество), не зная имен узлов. Корень будет содержать только узлы, которые он не получит глубже.

Возможно ли это в SQL?

Я смотрел на это, но сомневаюсь, что смогу получить достаточно прав для его реализации.

http://architectshack.com/ClrXmlShredder.ashx

Ответы на вопрос(1)

Ваш ответ на вопрос