테이블/열에 대한 사용자 지정 XSD 매핑(SQLXML)
적용 대상: SQL Server Azure SQL Database
XSD 스키마를 사용하여 관계형 데이터베이스의 XML 뷰를 제공하는 경우 스키마의 요소와 특성을 데이터베이스의 테이블 및 열에 매핑해야 합니다. 데이터베이스 테이블/뷰의 행은 XML 문서의 요소에 매핑됩니다. 데이터베이스의 열 값은 특성 또는 요소에 매핑합니다.
주석이 추가된 XSD 스키마에 대해 XPath 쿼리를 지정하면 스키마의 요소 및 특성에 대한 데이터가 매핑되는 테이블 및 열에서 검색됩니다. 데이터베이스에서 단일 값을 가져오려면 XSD 스키마에 지정된 매핑에 관계 및 필드 사양이 모두 있어야 합니다. 요소/특성의 이름이 매핑 되는 테이블/뷰 또는 열 이름과 같지 않은 경우 SQL:relation 및 sql:field 주석을 사용하여 XML 문서의 요소 또는 특성과 데이터베이스의 테이블(뷰) 또는 열 간의 매핑을 지정합니다.
sql-relation
XSD 스키마의 XML 노드를 데이터베이스 테이블에 매핑하기 위해 sql:relation 주석이 추가됩니다. 테이블(뷰)의 이름은 sql:relation 주석의 값으로 지정됩니다.
요소에 sql:relation을 지정하면 이 주석의 범위가 해당 요소의 복합 형식 정의에 설명된 모든 특성 및 자식 요소에 적용되므로 주석 작성에 바로 가기가 제공됩니다.
Sql:relation 주석은 Microsoft SQL Server에서 유효한 식별자가 XML에서 유효하지 않은 경우에도 유용합니다. 예를 들어 "주문 세부 정보"는 SQL Server에서 유효한 테이블 이름이지만 XML에는 없습니다. 이러한 경우 sql:relation 주석을 사용하여 매핑을 지정할 수 있습니다. 예를 들면 다음과 같습니다.
<xsd:element name="OD" sql:relation="[Order Details]">
sql-field
sql-field 주석은 요소 또는 특성을 데이터베이스 열에 매핑합니다. 스키마의 XML 노드를 데이터베이스 열에 매핑하기 위해 sql:field 주석이 추가됩니다. 빈 콘텐츠 요소에는 sql:field를 지정할 수 없습니다.
예제
다음 예제를 사용하여 작업 샘플을 만들려면 특정 요구 사항을 충족해야 합니다. 자세한 내용은 SQLXML 실행 요구 사항 예제를 참조 하세요.
A. sql:relation 및 sql:field 주석 지정
이 예제에서 XSD 스키마는 <>FName 및 LName>> 자식 요소와 <ContactID 특성을 사용하는 <복합 형식의 Contact 요소로 구성됩니다.
sql:relation 주석은 Contact> 요소를 AdventureWorks 데이터베이스의 Person.Contact 테이블에 매핑<합니다. sql:field 주석은 FName 요소를 FirstName> 열에 매핑하고 <LName 요소를 LastName> 열에 매핑<합니다.
ContactID 특성에 대한 주석이 지정되지 않았습니다. 이렇게 하면 특성이 동일한 이름의 열에 기본 매핑됩니다.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Contact" sql:relation="Person.Contact" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FName"
sql:field="FirstName"
type="xsd:string" />
<xsd:element name="LName"
sql:field="LastName"
type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ContactID"
type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
스키마에 대해 샘플 XPath 쿼리를 테스트하려면
위 스키마 코드를 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 MySchema-annotated.xml 저장합니다.
아래 템플릿을 복사하여 텍스트 파일에 붙여넣습니다. 파일을 MySchema-annotated.xml 저장한 디렉터리에 MySchema-annotatedT.xml 저장합니다.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchema-annotated.xml"> /Contact </sql:xpath-query> </ROOT>
매핑 스키마(MySchema-annotated.xml)에 지정된 디렉터리 경로는 템플릿이 저장된 디렉터리를 기준으로 합니다. 절대 경로도 지정할 수 있습니다. 예를 들면 다음과 같습니다.
mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"
SQLXML 4.0 테스트 스크립트(Sqlxml4test.vbs)를 만들고 사용하여 템플릿을 실행합니다.
자세한 내용은 ADO를 사용하여 SQLXML 쿼리를 실행합니다.
결과 집합의 일부는 다음과 같습니다.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="1">
<FName>Gustavo</FName>
<LName>Achong</LName>
</Contact>
.....
</ROOT>