Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Az XML tömeges betöltésekor ismernie kell az alábbi irányelveket és korlátozásokat:
A beágyazott sémák nem támogatottak.
Ha beágyazott sémát használ a forrás XML-dokumentumban, az XML tömeges betöltése figyelmen kívül hagyja ezt a sémát. Meg kell adnia az XML-adatokon kívüli tömeges XML-betöltés leképezési sémáját. A leképezési sémát nem adhatja meg csomóponton az xmlns="x:schema" attribútum használatával.
A rendszer ellenőrzi, hogy egy XML-dokumentum jól formázott-e, de nincs érvényesítve.
Az XML-tömeges terhelés ellenőrzi az XML-dokumentumot annak megállapításához, hogy jól formázott-e, hogy az XML megfelel-e a World Wide Web Consortium XML 1.0-s javaslatának szintaxiskövetelményeinek. Ha a dokumentum nem megfelelően formázott, az XML tömeges betöltése megszakítja a feldolgozást, és hibát ad vissza. Ez alól az egyetlen kivétel, ha a dokumentum egy töredék (például a dokumentumnak nincs egyetlen gyökéreleme), ebben az esetben az XML tömeges betöltése betölti a dokumentumot.
Az XML tömeges betöltése nem ellenőrzi a dokumentumot az XML-adatfájlban definiált vagy hivatkozott XML-Data vagy DTD-sémára vonatkozóan. Emellett az XML tömeges betöltése nem ellenőrzi az XML-adatfájlt a megadott leképezési sémán.
A rendszer figyelmen kívül hagyja az XML-prolog-információkat.
Az XML tömeges betöltése figyelmen kívül hagyja az XML-dokumentum gyökéreleme <> előtti és utáni összes információt. Az XML tömeges betöltése például figyelmen kívül hagyja az XML-deklarációkat, a belső DTD-definíciókat, a külső DTD-hivatkozásokat, a megjegyzéseket stb.
Ha olyan leképezési sémával rendelkezik, amely két tábla (például az Ügyfél és a CustOrder közötti) elsődleges kulcs/idegen kulcs kapcsolatát határozza meg, akkor az elsődleges kulccsal rendelkező táblát először a sémában kell leírni. Az idegenkulcs-oszlopot tartalmazó táblázatnak később meg kell jelennie a sémában. Ennek az az oka, hogy a táblák a sémában való azonosításának sorrendje az adatbázisba való betöltéshez használt sorrend. Az alábbi XDR-séma például hibát fog eredményezni az XML tömeges betöltésekor, mert a <Rendelés> elem az <Ügyfél> elem előtt van leírva. A CustOrder CustomerID oszlopa egy idegenkulcs-oszlop, amely a Cust tábla CustomerID elsődleges kulcs oszlopára hivatkozik.
<?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="Order" sql:relation="CustOrder" > <AttributeType name="OrderID" /> <AttributeType name="CustomerID" /> <attribute type="OrderID" /> <attribute type="CustomerID" /> </ElementType> <ElementType name="CustomerID" dt:type="int" /> <ElementType name="CompanyName" dt:type="string" /> <ElementType name="City" dt:type="string" /> <ElementType name="root" sql:is-constant="1"> <element type="Customers" /> </ElementType> <ElementType name="Customers" sql:relation="Cust" sql:overflow-field="OverflowColumn" > <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> </Schema>Ha a séma nem ad meg túlcsordulási oszlopokat az sql:overflow mező megjegyzésével, az XML tömeges betöltése figyelmen kívül hagyja az XML-dokumentumban található, de a leképezési sémában nem szereplő adatokat.
Az XML tömeges betöltése a megadott leképezési sémát alkalmazza, amikor ismert címkékkel találkozik az XML-adatfolyamban. Figyelmen kívül hagyja az XML-dokumentumban található, de a sémában nem szereplő adatokat. Tegyük fel például, hogy rendelkezik egy ügyfélelemet< leíró> leképezési sémával. Az XML-adatfájl rendelkezik egy <AllCustomers gyökércímkével> (amely nem szerepel a sémában), amely az ügyfél< összes elemét> tartalmazza:
<AllCustomers> <Customer>...</Customer> <Customer>...</Customer> ... </AllCustomers>Ebben az esetben az XML tömeges betöltése figyelmen kívül hagyja az <AllCustomers> elemet, és megkezdi a leképezést az <Ügyfél> elemnél. Az XML tömeges betöltése figyelmen kívül hagyja a sémában nem leírt, de az XML-dokumentumban található elemeket.
Fontolja meg egy másik XML-forrásadatfájlt, amely rendelési< elemeket tartalmaz>. Ezek az elemek nem szerepelnek a leképezési sémában:
<AllCustomers> <Customer>...</Customer> <Order> ... </Order> <Order> ... </Order> ... <Customer>...</Customer> <Order> ... </Order> <Order> ... </Order> ... ... </AllCustomers>Az XML tömeges betöltése figyelmen kívül hagyja ezeket a <rendelési> elemeket. Ha azonban a sémában az sql:overflow mező széljegyzetét használja egy oszlop túlcsordulási oszlopként való azonosításához, az XML Tömeges terhelés ebben az oszlopban tárolja az összes nem feldolgozott adatot.
A CDATA-szakaszok és entitáshivatkozások a sztring megfelelőire lesznek lefordítva, mielőtt az adatbázisban tárolva lennének.
Ebben a példában egy CDATA-szakasz körbefuttatja a <Város> elem értékét. Az XML Tömeges terhelés kinyeri a sztringértéket ("NY"), mielőtt beszúrja a <City> elemet az adatbázisba.
<City><![CDATA[NY]]> </City>Az XML tömeges betöltése nem őrzi meg az entitáshivatkozásokat.
Ha a leképezési séma egy attribútum alapértelmezett értékét adja meg, és az XML-forrásadatok nem tartalmazzák ezt az attribútumot, az XML tömeges betöltése az alapértelmezett értéket használja.
Az alábbi XDR-mintaséma egy alapértelmezett értéket rendel a HireDate attribútumhoz:
<?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="root" sql:is-constant="1"> <element type="Customers" /> </ElementType> <ElementType name="Customers" sql:relation="Cust3" > <AttributeType name="CustomerID" dt:type="int" /> <AttributeType name="HireDate" default="2000-01-01" /> <AttributeType name="Salary" /> <attribute type="CustomerID" sql:field="CustomerID" /> <attribute type="HireDate" sql:field="HireDate" /> <attribute type="Salary" sql:field="Salary" /> </ElementType> </Schema>Ebben az XML-adatban a HireDate attribútum hiányzik a második <Ügyfelek> elemből. Amikor az XML tömeges betöltése beszúrja a második <Ügyfelek> elemet az adatbázisba, a séma által megadott alapértelmezett értéket használja.
<ROOT> <Customers CustomerID="1" HireDate="1999-01-01" Salary="10000" /> <Customers CustomerID="2" Salary="10000" /> </ROOT>Az sql:url-encode megjegyzés nem támogatott:
Nem adhat meg URL-címet az XML-adatbemenetben, és arra számít, hogy a tömeges betöltés az adott helyről olvassa be az adatokat.
A leképezési sémában azonosított táblák létrejönnek (az adatbázisnak léteznie kell). Ha egy vagy több tábla már létezik az adatbázisban, az SGDropTables tulajdonság határozza meg, hogy ezeket az előző táblákat el kell-e dobni és újra létre kell-e hozni.
Ha megadja a SchemaGen tulajdonságot (például SchemaGen = true), a leképezési sémában azonosított táblák létrejönnek. A SchemaGen azonban egyetlen kivétellel sem hoz létre korlátozásokat (például az ELSŐDLEGES KULCS/IDEGENKULCS-megkötéseket): Ha a kapcsolat elsődleges kulcsát alkotó XML-csomópontok XML-típusú azonosítóval (azaz xSD-hez való típus="xsd:ID" azonosítóval) vannak definiálva, és az SGUseID tulajdonság Értéke True a SchemaGen esetében, ezután nem csak az azonosítóval beírt csomópontokból jönnek létre elsődleges kulcsok, hanem az elsődleges kulcs-/idegenkulcs-kapcsolatok a leképezési sémakapcsolatokból jönnek létre.
A SchemaGen nem használ XSD-sémaelemet és -bővítményeket a relációs SQL Server-séma létrehozásához.
Ha a SchemaGen tulajdonságot (például SchemaGen = true) adja meg tömeges betöltéskor, csak a megadott táblák (és nem a megosztott név nézetei) frissülnek.
A SchemaGen csak alapszintű funkciókat biztosít a relációs séma jegyzetekkel ellátott XSD-ből való létrehozásához. A felhasználónak szükség esetén manuálisan kell módosítania a létrehozott táblákat.
Ha több kapcsolat is létezik a táblák között, a SchemaGen egyetlen kapcsolatot próbál létrehozni, amely tartalmazza a két tábla közötti összes kulcsot. Ez a korlátozás Transact-SQL hiba oka lehet.
Ha xml-adatokat tölt be tömegesen egy adatbázisba, a leképezési sémában legalább egy attribútumnak vagy gyermekelemnek kell lennie, amely egy adatbázisoszlopra van leképezve.
Ha dátumértékeket szúr be XML tömeges betöltéssel, az értékeket (-)CCYY-MM-DD((+-)TZ) formátumban kell megadni. Ez a dátum szabványos XSD-formátuma.
Egyes tulajdonságjelölők nem kompatibilisek más tulajdonságjelölőkkel. A tömeges terhelés például nem támogatja az Ignoreduplicatekeys=true és a Keepidentity=false együttes használatát. Ha a Keepidentity=false értékeket tárolja, a tömeges terhelés arra számít, hogy a kiszolgáló létrehozza a kulcsértékeket. A tábláknak identitáskorlátozással kell rendelkezniük a kulcson. A kiszolgáló nem hoz létre duplikált kulcsokat, ami azt jelenti, hogy nem szükséges, hogy az Ignoreduplicatekeys értéke igaz legyen. Az ignoreduplicatekeys értéket csak akkor kell igaz értékre állítani, ha a bejövő adatokból származó elsődleges kulcsértékeket egy sorokat tartalmazó táblába tölti fel, és fennáll az elsődleges kulcsértékek ütközésének lehetősége.