Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
XML Toplu Yükleme, düğümleri kapsama girdiğinde kayıtlar oluşturur ve bu kayıtları Microsoft SQL Server'a gönderir; düğümler kapsamdan çıkarken, kayıt için verilen veriler düğümün kapsamı içinde olmalıdır.
Müşteri ile <Sipariş> öğeleri <> arasındaki bir-çok ilişkisinin (bir müşteri birden fazla sipariş verebilir) <sql:ilişki> öğesi kullanılarak belirtildiği aşağıdaki XSD şemasını ele alalım:
<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="Customers" sql:relation="Cust" >
<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" >
<xsd:complexType>
<xsd:attribute name="OrderID" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Müşteri> öğesi< düğümü kapsama girdiğinde, XML Toplu Yük bir müşteri kaydı oluşturur. Bu kayıt, XML Toplu Yükleme /Customer'ı> okuyana< kadar kalır. Order> öğesi düğümünü işlerken<, XML Toplu Yükleme, CustomerID> ana öğesinden CustOrder tablosunun< CustomerID yabancı anahtar sütununun değerini elde etmek için sql:relationship> kullanır; çünkü Order öğesi CustomerID özniteliğini belirtmez.<<> Bu, Müşteri> öğesini< tanımlarken, sql:relationship> belirtmeden< önce şemada CustomerID özniteliğini belirtmeniz gerektiği anlamına gelir. Aksi takdirde, bir <Order> öğesi kapsama girdiğinde, XML Toplu Yük CustOrder tablosu için bir kayıt oluşturur ve XML Toplu Yük /Order> son etiketine ulaştığında<, kaydı CustomerID yabancı anahtar sütun değeri olmadan SQL Server'a gönderir.
Bu örnekte verilen şemayı SampleSchema.xmlolarak kaydedin.
Çalışan bir örnek test etmek için
Şu tabloları oluşturun:
CREATE TABLE Cust ( CustomerID int PRIMARY KEY, CompanyName varchar(20) NOT NULL, City varchar(20) DEFAULT 'Seattle') GO CREATE TABLE CustOrder ( OrderID varchar(10) PRIMARY KEY, CustomerID int FOREIGN KEY REFERENCES Cust(CustomerID)) GOAşağıdaki örnek verileri SampleXMLData.xmlolarak kaydedin:
<ROOT> <Customers> <CompanyName>Hanari Carnes</CompanyName> <City>NY</City> <Order OrderID="1" /> <Order OrderID="2" /> <CustomerID>1111</CustomerID> </Customers> <Customers> <CompanyName>Toms Spezialitten</CompanyName> <City>LA</City> <Order OrderID="3" /> <CustomerID>1112</CustomerID> </Customers> <Customers> <CompanyName>Victuailles en stock</CompanyName> <Order OrderID="4" /> <CustomerID>1113</CustomerID> </Customers> </ROOT>XML Toplu Yükleme çalıştırmak için, aşağıdaki Microsoft Visual Basic Scripting Edition (VBScript) örneğini MySample.vbs olarak kaydedip çalıştırın:
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.Transaction=True objBL.Execute "c:\SampleSchema.xml", "c:\SampleXMLData.xml" set objBL=NothingSonuç olarak, XML Toplu Yük, CustOrder tablosunun CustomerID yabancı anahtar sütununa bir NULL değeri ekler. XML örnek verisini CustomerID<> çocuk öğesi Order> child öğesinden önce< görünecek şekilde revize ederseniz, beklenen sonucu elde edersiniz: XML Bulk Load, belirtilen yabancı anahtar değerini sütuna ekler.
Bu eşdeğer XDR şemasıdır:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
<ElementType name="CustomerID" />
<ElementType name="CompanyName" />
<ElementType name="City" />
<ElementType name="root" sql:is-constant="1">
<element type="Customers" />
</ElementType>
<ElementType name="Customers" sql:relation="Cust" >
<element type="CustomerID" sql:field="CustomerID" />
<element type="CompanyName" sql:field="CompanyName" />
<element type="City" sql:field="City" />
<element type="Order" >
<sql:relationship
key-relation ="Cust"
key ="CustomerID"
foreign-key ="CustomerID"
foreign-relation="CustOrder" />
</element>
</ElementType>
<ElementType name="Order" sql:relation="CustOrder" >
<AttributeType name="OrderID" />
<AttributeType name="CustomerID" />
<attribute type="OrderID" />
<attribute type="CustomerID" />
</ElementType>
</Schema>