sql:overflow-field를 사용하여 사용되지 않은 데이터 검색(SQLXML 4.0)
적용 대상: SQL ServerAzure SQL Database
Transact-SQL OPENXML 함수를 사용하여 XML 문서의 데이터베이스에 레코드를 삽입하는 경우 원본 XML 문서의 모든 미해결 데이터를 열에 저장할 수 있습니다. 주석이 추가된 스키마를 사용하여 데이터베이스에서 데이터를 검색하는 경우 sql:overflow-field 특성을 지정하여 오버플로 데이터가 저장되는 테이블의 열을 식별할 수 있습니다. 요소>에 sql:overflow-field 특성을 지정할 <수 있습니다.
그런 다음, 다음과 같은 방법으로 이 데이터를 검색합니다.
오버플로 열에 저장된 특성은 sql:overflow-field 주석이 포함된 요소에 추가됩니다.
데이터베이스의 오버플로 열에 저장된 자식 요소와 하위 항목은 스키마에 명시적으로 지정된 콘텐츠 다음에 자식 요소로 추가됩니다. (순서는 유지되지 않습니다.)
예제
다음 예제를 사용하여 작업 샘플을 만들려면 특정 요구 사항을 충족해야 합니다. 자세한 내용은 SQLXML 실행 요구 사항 예제를 참조 하세요.
A. 요소에 대한 sql:overflow-field 지정
이 예제에서는 Customers2라는 테이블이 tempdb 데이터베이스에 있도록 다음 스크립트가 실행되었다고 가정합니다.
USE tempdb
CREATE TABLE Customers2 (
CustomerID VARCHAR(10),
ContactName VARCHAR(30),
AddressOverflow NVARCHAR(500))
GO
INSERT INTO Customers2 VALUES (
'ALFKI',
'Joe',
'<Address>
<Address1>Maple St.</Address1>
<Address2>Apt. E105</Address2>
<City>Seattle</City>
<State>WA</State>
<Zip>98147</Zip>
</Address>')
GO
또한 tempdb 데이터베이스에 대한 가상 디렉터리와 "template"이라는 템플릿 형식의 템플릿 가상 이름을 만들어야 합니다.
다음 예제에서 매핑 스키마는 Customers2 테이블의 AddressOverflow 열에 저장된 미해결 데이터를 검색합니다.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Customers2" sql:overflow-field="AddressOverflow" >
<xsd:complexType>
<xsd:attribute name="CustomerID" type="xsd:integer"/>
<xsd:attribute name="ContactName" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
스키마에 대해 샘플 XPath 쿼리를 테스트하려면
위 스키마 코드를 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 Overflow.xml로 저장합니다.
다음 템플릿을 복사하여 텍스트 파일에 붙여넣습니다. 파일을 Overflow.xml 저장한 동일한 디렉터리에 OverflowT.xml 저장합니다. 템플릿의 쿼리는 Customers2 테이블의 레코드를 선택합니다.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="Overflow.xml"> /Customers2 </sql:xpath-query> </ROOT>
매핑 스키마(Overflow.xml)에 지정된 디렉터리 경로는 템플릿이 저장된 디렉터리를 기준으로 합니다. 절대 경로도 지정할 수 있습니다. 예를 들면 다음과 같습니다.
mapping-schema="C:\SqlXmlTest\Overflow.xml"
SQLXML 4.0 테스트 스크립트(Sqlxml4test.vbs)를 만들고 사용하여 템플릿을 실행합니다.
자세한 내용은 ADO를 사용한 SQLXML 4.0 쿼리를 실행합니다.
결과 집합은 다음과 같습니다.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Customers2 CustomerID="ALFKI" ContactName="Joe">
<Address1>Maple St.</Address1>
<Address2>Apt. E105</Address2>
<City>Seattle</City>
<State>WA</State>
<Zip>98147</Zip>
</Customers2>
</ROOT>