주석 해석 - sql:overflow-field
적용 대상: SQL Server Azure SQL Database
스키마에서 열을 오버플로 열로 식별하여 XML 문서에서 미해결 데이터를 모두 받을 수 있습니다. 이 열은 sql:overflow-field 주석을 사용하여 스키마에 지정됩니다. 여러 오버플로 열을 가질 수 있습니다.
정의된 sql:overflow 필드 주석이 있는 XML 노드(요소 또는 특성)가 범위에 들어갈 때마다 오버플로 열이 활성화되고 미해결 데이터를 받습니다. 노드가 범위를 벗어나면 오버플로 열이 더 이상 활성화되지 않고 XML 대량 로드로 인해 이전 오버플로 필드(있는 경우)가 활성화됩니다.
XML 대량 로드는 오버플로 열에 데이터를 저장하므로 sql:overflow-field가 정의된 부모 요소의 여는 태그와 닫는 태그도 저장합니다.
예를 들어 다음 스키마는 Customers> 및< CustOrder> 요소를 설명<합니다. 이러한 각 요소는 오버플로 열을 식별합니다.
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="CustCustOrder"
parent="Cust"
parent-key="CustomerID"
child="CustOrder"
child-key="CustomerID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="ROOT" sql:is-constant="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Customers"
sql:relation="Cust"
sql:overflow-field="OverflowColumn">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CustomerID" type="xsd:integer"/>
<xsd:element name="CompanyName" type="xsd:string"/>
<xsd:element name="City" type="xsd:string"/>
<xsd:element name="Order"
sql:relation="CustOrder"
sql:relationship="CustCustOrder"
sql:overflow-field="OverflowColumn">
<xsd:complexType>
<xsd:attribute name="OrderID"/>
<xsd:attribute name="CustomerID"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
스키마에서 Customer> 요소는 Cust 테이블에 매핑되고 <Order> 요소는 CustOrder 테이블에 매핑됩니다.<
<Customer> 및< Order> 요소는 모두 오버플로 열을 식별합니다. 따라서 XML 대량 로드는 Cust 테이블의 오버플로 열에 Customer> 요소의< 미해결 자식 요소와 특성을 모두 저장하고 CustOrder 테이블의 오버플로 열에 있는 Order> 요소의 <모든 미해결 자식 요소와 특성을 저장합니다.
작업 샘플을 테스트하려면
이 예제에 제공된 스키마를 SampleSchema.xml 저장합니다.
다음 테이블을 만듭니다.
CREATE TABLE Cust ( CustomerID int PRIMARY KEY, CompanyName varchar(20) NOT NULL, City varchar(20) DEFAULT 'Seattle', OverflowColumn nvarchar(200)) GO CREATE TABLE CustOrder ( OrderID int PRIMARY KEY, CustomerID int FOREIGN KEY REFERENCES Cust(CustomerID), OverflowColumn nvarchar(200)) GO
다음 예제 XML 데이터를 SampleXMLData.xml로 저장합니다.
<ROOT> <Customers> <CustomerID>1111</CustomerID> <CompanyName>Hanari Carnes</CompanyName> <City><![CDATA[NY]]> </City> <Junk>garbage in overflow</Junk> <Order OrderID="1" /> <Order OrderID="2" /> </Customers> <Customers> <CustomerID>1112</CustomerID> <CompanyName>Toms Spezialitten</CompanyName> <City><![CDATA[LA]]> </City> <xyz><address>111 Maple, Seattle</address></xyz> <Order OrderID="3" /> </Customers> <Customers> <CustomerID>1113</CustomerID> <CompanyName>Victuailles en stock</CompanyName> <Order OrderID="4" /> </Customers> </ROOT>
XML 대량 로드를 실행하려면 다음 Microsoft VBScript(Visual Basic Scripting Edition) 예제를 Sample.vbs로 저장하고 실행합니다.
set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0") objBL.ConnectionString = "provider=SQLOLEDB;data source=localhost;database=tempdb;integrated security=SSPI" objBL.ErrorLogFile = "c:\error.log" objBL.CheckConstraints = True objBL.Execute "c:\SampleSchema.xml", "c:\SampleXMLData.xml" set objBL=Nothing