VMware vCenter 5を使用していて、作成されたDRSルールのクイックレポートを作成したいと思います。以下はデータの抜粋です。
<obj xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:vim25" versionId="5.0" xsi:type="ArrayOfClusterRuleInfo">
<ClusterRuleInfo xsi:type="ClusterAffinityRuleSpec">
<key>1</key>
<enabled>true</enabled>
<name>SQL Servers</name>
<vm type="VirtualMachine" xsi:type="ManagedObjectReference">vm-100</vm>
<vm type="VirtualMachine" xsi:type="ManagedObjectReference">vm-200</vm>
<vm type="VirtualMachine" xsi:type="ManagedObjectReference">vm-300</vm>
</ClusterRuleInfo>
<ClusterRuleInfo xsi:type="ClusterAntiAffinityRuleSpec">
<key>2</key>
<enabled>true</enabled>
<name>Oracle DBs</name>
<vm type="VirtualMachine" xsi:type="ManagedObjectReference">vm-1000</vm>
<vm type="VirtualMachine" xsi:type="ManagedObjectReference">vm-2000</vm>
</ClusterRuleInfo>
</obj>
ルールごとのVMの数は異なる場合があることに注意してください。
このXMLデータをテーブルに変換できなかったので、次のクエリを使用して(タグ内の)名前だけを見つけてみました。
SELECT ref.value('name[1]', 'varchar(200)') as [enabled]
FROM @data.nodes('/obj/ClusterRuleInfo') data( ref )
データを返しません。と行を削除すると機能することがわかりましたが、理由はわかりません。これは、SQL ServerがXMLスキーマを理解していないためだと思います(または同様のもの-私はXMLの専門家ではありません)。
最後に、次のような表を見たいと思います。
Name VM
----------- ----
SQL Servers 100
SQL Servers 200
SQL Servers 300
Oracle DBs 1000
Oracle DBs 2000