1

에서 XML 열이있는 테이블을 만드는 동안 CONTENT 키워드 사용 XML 형식 열이있는 테이블을 만드는 동안 XML 스키마 컬렉션을 참조합니다. XML 스키마을 지정할 때 content 또는 DOCUMENT 키워드 중 하나를 언급 할 수 있습니다. 후자는 XML 데이터가 단일 열에 문서로 저장되도록합니다.XML 스키마 콜렉션

비디오 자습서에 따르면 콘텐츠조각에 XML 데이터를 저장합니다. 나는 콘텐츠 키워드의 사용에 관한 참조 다른 곳에서는 찾을 수없는 그것은 스키마 & 데이터에 대한 의미입니다 위의 진술 외에

.

조각을 만들고 관리하는 방법과 개별적으로 쿼리 할 수있는 방법과 방법을 알고 싶습니다. 또한 조각이 어떻게 상호 연관되어 있는지. 다음으로 XML 스키마 컬렉션을 수정하면 그 영향은 무엇입니까?

답변

2

실제로 나는 SQLServer 2005 XML이 문서화되어 있다고 생각합니다.
CONTENT가 기본값이며 모든 유효한 XML을 허용합니다. DOCUMENT는보다 구체적이며 저장할 수있는 XML 데이터에 단일 최상위 노드 만있을 수 있음을 의미합니다.

만들기 :

CREATE TABLE XmlCatalog ( 
    ID INT PRIMARY KEY, 
    Document XML(CONTENT myCollection)) 

삽입 :

INSERT INTO XmlCatalog VALUES (2, 
'<doc id="123"> 
    <sections> 
    <section num="1"><title>XML Schema</title></section> 
    <section num="3"><title>Benefits</title></section> 
    <section num="4"><title>Features</title></section> 
    </sections> 
</doc>') 

선택 :

SELECT xCol.query('/doc[@id = 123]//section') 
FROM XmlCatalog 
WHERE xCol.exist ('/doc[@id = 123]') = 1 

... 등등. 쿼리 언어는 xpath 1.0의 하위 집합에서 더 많거나 적습니다.

XSD를 수정하면 삽입 및 업데이트에서 확인되고 각 요소의 xml 내에 저장됩니다. 늘어나는만큼 내가 문서를 이해하는 한 항목에 다른 스키마를 참조 할 수 있도록 하나의 열에 대한 여러 스키마를 추가 할 수 있습니다.

편집 :
문서의 특정 부분을 읽은 후에 내가 당신의 문제를 이해하고 있다고 생각합니다. 그 점에 대한 참조는 분명하지 않지만 한 가지 최상위 노드가있는 항목 만 XSD 스키마에 바인딩 될 수 있다는 것을 이해합니다.
XSD 스키마에 사용 된 XSD 파일을 정의하는 단일 최상위 노드가 필요하기 때문에 둘 이상의 최상위 요소가 포함 된 조각을 유효화 할 수 없습니다. 나는 시도하지 않았지만 할 수 없다고 생각합니다.
그러나 CONTENT 열을 정의하고, XSD를 수정하고 둘 다 저장하며, XSD를 참조하는 최상위 레벨 노드가있는 XML은 물론 잘 형성되었는지 검사 할 XML 조각도 유효합니다. 조각은 위의 select 문에 표시된 XPath 쿼리 언어를 사용하여 액세스 할 수 있습니다.
성능에 미치는 영향에 대해 많이 설명 할 수는 없습니다. 이 레퍼런스에서는 XSD가 인라인으로 저장되므로 db 내에 약간의 공간이 필요하다고 언급합니다. XPath 쿼리도 실행해야합니다. 사실 xpath는 일반적으로 꽤 빠릅니다. 결과를 얻으려면 각 행마다 수행해야하는 performace 원인을 줄일 수 있다고 생각합니다.내가 xpath 표현뿐만 아니라 저장된 xml의 크기와 복잡성에 따라 특정 쿼리에 대한 실행 계획을 확인해야한다고 생각한다.

+0

고마워 ... 마침내 누군가가 대답했다 :) ... 내 질문은 매우 특정 XML 데이터를 조각에 저장되는 특정 있습니다. SQL Server에서 이러한 조각을 분할하는 방법과 이러한 조각에 독립적으로 액세스 할 수 있는지 여부를 알고 싶습니다. 또한 XML 데이터를 이러한 방식으로 조각화하는 것이 성능에 미치는 영향은 무엇입니까? 링크를 가져 주셔서 감사합니다 ... 나는 그것을 일찍 보지 못했습니다. – Kabeer