SQL Server 2008의 XML에서 일부 정보를 가져와야하지만 기본 속성도 가져올 수 없습니다. 내가 시도한 모든 샘플이 실패했습니다. 테이블 이름은 Item
이고 xml 열 이름은 Data
입니다.SQL에서 XML 값 쿼리
단순화 된 XML은 다음과 같습니다
<AnchoredXml xmlns="urn:schema:Microsoft.Rtc.Management.ScopeFramework.2008" SchemaWriteVersion="2">
<Key ScopeClass="Global">
<SchemaId Namespace="urn:schema:Microsoft.Rtc.Management.Deploy.Topology.2008" ElementName="Topology" />
<AuthorityId Class="Host" InstanceId="00000000-0000-0000-0000-000000000000" />
</Key>
<Dictionary Count="1">
<Item>
<Key />
<Value Signature="a3502dd0-8c16-4023-9eea-30ea1c7a3a2b">
<Topology xmlns="urn:schema:Microsoft.Rtc.Management.Deploy.Topology.2008">
<Services>
<Service RoleVersion="1" ServiceVersion="6" Type="Microsoft.Rtc.Management.Deploy.Internal.ServiceRoles.FileStoreService">
<ServiceId SiteId="1" RoleName="FileStore" Instance="1" />
<DependsOn />
<InstalledOn>
<ClusterId SiteId="1" Number="1" />
</InstalledOn>
<Ports xmlns="urn:schema:Microsoft.Rtc.Management.Deploy.ServiceRoles.2008" />
<FileStoreService xmlns="urn:schema:Microsoft.Rtc.Management.Deploy.ServiceRoles.2008" ShareName="lyncShare" />
</Service>
</Services>
</Topology>
</Value>
</Item>
</Dictionary>
</AnchoredXml>
내가 (더 행이) 올바른 XML을 선택 AnchoredXml/키 /받은 SchemaID/@ 이름 공간에 정보를 알아볼 필요가있다. 위의 샘플 xml은 올바른 것입니다. 그 후 적절한 서비스를 찾을 필요가 있습니다.
Type="Microsoft.Rtc.Management.Deploy.Internal.ServiceRoles.FileStoreService"
여기서 필요한 서비스는 FileStoreService/@ ShareName입니다.
처음 네임 스페이스 attributte를 인쇄하려고 시도했지만 샘플 코드가 작동하지 않습니다. 몇 가지 시도 :
SELECT c.p.value('(@Namespace)[1]', 'varchar(50)') as 'Nmspace'
FROM Item
CROSS APPLY Data.nodes('/AnchoredXml/Key/SchemaId') c(p)
반환 빈 결과는 따옴표 ("")
없이 모든 행에 대한 모든 행에 대한SELECT
It.Data.exist('/AnchoredXml/Key/SchemaId[@Namespace="Microsoft.Rtc.Management.Deploy.Topology.2008"]')
FROM [xds].[dbo].[Item] AS It
0을 반환의를
SELECT Data.value('(/AnchoredXml/Key/SchemaId/@Namespace)[1]', 'varchar(50)')
FROM Item
반환 NULL을 설정
적어도 속성 테스트를 수행하는 작업 샘플 코드로 충분할 수 있으며 나는 나머지를 알아낼 것이다. 제 쿼리에서 오류를 찾거나 다른 문제를 식별하도록 도와주십시오. 감사합니다.
은 참으로 내 문제의 원인이었다! 고맙습니다. 하나의 필터 만 추가하면됩니다. WHERE Data.exist ('(/ AnchoredXml/Key/SchemaId [@ 네임 스페이스 = "스키마 : Microsoft.Rtc.Management.Deploy.Topology.2008"])') = 1 – Geralt