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'yi kullanırken aşağıdaki yönergeler ve sınırlamalar hakkında bilgi sahibi olmanız gerekir:
Satır içi şemalar desteklenmez.
Kaynak XML belgesinde satır içi şemanız varsa, XML Toplu Yükleme bu şemayı yoksayar. XML verilerinin dışında XML Toplu Yükleme için eşleme şemasını belirtirsiniz. Xmlns="x:schema" özniteliğini kullanarak bir düğümde eşleme şemasını belirtemezsiniz.
XML belgesi iyi biçimlendirilmiş olup olmadığı denetleniyor ancak doğrulanmıyor.
XML Toplu Yükleme, XML'nin World Wide Web Consortium'un XML 1.0 önerisinin söz dizimi gereksinimlerine uygun olduğundan emin olmak için XML belgesini denetler. Belge düzgün biçimlendirilmemişse, XML Toplu Yükleme işlemi iptal eder ve bir hata döndürür. Bunun tek istisnası, belgenin bir parça olmasıdır (örneğin, belgenin tek bir kök öğesi yoktur), bu durumda XML Toplu Yükleme belgeyi yükler.
XML Toplu Yükleme, XML veri dosyasında tanımlanan veya başvurulan herhangi bir XML-Data veya DTD şemasıyla ilgili olarak belgeyi doğrulamaz. Ayrıca, XML Toplu Yükleme XML veri dosyasını sağlanan eşleme şemasına göre doğrulamaz.
Tüm XML prolog bilgileri yoksayılır.
XML Toplu Yükleme, XML belgesindeki kök< öğeden önceki ve sonraki >tüm bilgileri yoksayar. Örneğin, XML Toplu Yükleme tüm XML bildirimlerini, iç DTD tanımlarını, dış DTD başvurularını, açıklamaları vb. yoksayar.
İki tablo arasında (Customer ve CustOrder gibi) birincil anahtar/yabancı anahtar ilişkisini tanımlayan bir eşleme şemanız varsa, birincil anahtara sahip tablo şemada ilk olarak açıklanmalıdır. Yabancı anahtar sütununa sahip tablo şemanın ilerleyen bölümlerinde görünmelidir. Bunun nedeni, tabloların şemada tanımlandığı sıranın, bunları veritabanına yüklemek için kullanılan sıra olmasıdır. Örneğin, aşağıdaki XDR şeması XML Toplu Yükleme'de kullanıldığında bir hata oluşturur çünkü <Order> öğesi Customer< öğesinden> önce açıklanmıştır. CustOrder içindeki CustomerID sütunu, Cust tablosundaki CustomerID birincil anahtar sütununa başvuran bir yabancı anahtar sütunudur.
<?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>
Şema , sql:overflow-field ek açıklamasını kullanarak taşma sütunları belirtmezse, XML Toplu Yükleme XML belgesinde bulunan ancak eşleme şemasında açıklanmayan tüm verileri yoksayar.
XML Toplu Yükleme, XML veri akışında bilinen etiketlerle karşılaştığında belirttiğiniz eşleme şemasını uygular. XML belgesinde bulunan ancak şemada açıklanmayan verileri yoksayar. Örneğin, Customer< öğesini tanımlayan> bir eşleme şemanız olduğunu varsayalım. XML veri dosyasında tüm <Müşteri> öğelerini kapsayan bir <AllCustomers> kök etiketi (şemada açıklanmaz) bulunur:
<AllCustomers> <Customer>...</Customer> <Customer>...</Customer> ... </AllCustomers>
Bu durumda, XML Toplu Yükleme AllCustomers< öğesini yoksayar> ve Customer< öğesinde eşlemeye> başlar. XML Toplu Yükleme, şemada açıklanmasa da XML belgesinde bulunan öğeleri yoksayar.
Order< öğelerini içeren> başka bir XML kaynak veri dosyası düşünün. Bu öğeler eşleme şemasında açıklanmaz:
<AllCustomers> <Customer>...</Customer> <Order> ... </Order> <Order> ... </Order> ... <Customer>...</Customer> <Order> ... </Order> <Order> ... </Order> ... ... </AllCustomers>
XML Toplu Yükleme bu <Order> öğelerini yoksayar. Ancak şemada bir sütunu taşma sütunu olarak tanımlamak için sql:overflow-field ek açıklamasını kullanırsanız, XML Toplu Yükleme tüm sabitlenmemiş verileri bu sütunda depolar.
CDATA bölümleri ve varlık başvuruları, veritabanında depolanmadan önce dize eşdeğerlerine çevrilir.
Bu örnekte, bir CDATA bölümü City< öğesinin> değerini sarmalar. XML Toplu Yükleme, City< öğesini veritabanına eklemeden önce dize değerini ("NY") ayıklar>.
<City><![CDATA[NY]]> </City>
XML Toplu Yükleme varlık başvurularını korumaz.
Eşleme şeması bir öznitelik için varsayılan değeri belirtiyorsa ve XML kaynak verileri bu özniteliği içermiyorsa, XML Toplu Yükleme varsayılan değeri kullanır.
Aşağıdaki örnek XDR şeması HireDate özniteliğine varsayılan bir değer atar:
<?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>
Bu XML verilerinde, ikinci > öğesinde HireDate özniteliği eksik. XML Toplu Yükleme veritabanına ikinci <Customers> öğesini eklediğinde, şemada belirtilen varsayılan değeri kullanır.
<ROOT> <Customers CustomerID="1" HireDate="1999-01-01" Salary="10000" /> <Customers CustomerID="2" Salary="10000" /> </ROOT>
sql:url-encode ek açıklaması desteklenmez:
XML veri girişinde BIR URL belirtemezsiniz ve Toplu Yükleme'nin bu konumdaki verileri okumasını bekleyebilirsiniz.
Eşleme şemasında tanımlanan tablolar oluşturulur (veritabanı mevcut olmalıdır). Veritabanında bir veya daha fazla tablo zaten varsa, SGDropTables özelliği bu önceden var olan tabloların bırakılıp bırakılmayacağını ve yeniden oluşturulup oluşturulmayacağını belirler.
SchemaGen özelliğini belirtirseniz (örneğin, SchemaGen = true), eşleme şemasında tanımlanan tablolar oluşturulur. Ancak SchemaGen, bu tablolarda tek bir özel durumla herhangi bir kısıtlama (BIRINCIL ANAHTAR/YABANCI ANAHTAR kısıtlamaları gibi) oluşturmaz: bir ilişkide birincil anahtarı oluşturan XML düğümleri bir XML türüne sahip olarak tanımlanıyorsa (XSD için type="xsd:ID" ) VE SGUseID özelliği SchemaGen için True olarak ayarlanırsa, ardından yalnızca kimlik türüne sahip düğümlerden oluşturulan birincil anahtarlar değil, eşlenen şema ilişkilerinden birincil anahtar/yabancı anahtar ilişkileri de oluşturulur.
SchemaGen, ilişkisel SQL Server şemasını oluşturmak için XSD şema modellerini ve uzantılarını kullanmaz.
Toplu Yüklemede SchemaGen özelliğini (örneğin SchemaGen = true) belirtirseniz, yalnızca belirtilen tablolar (paylaşılan ad görünümleri değil) güncelleştirilir.
SchemaGen yalnızca açıklamalı XSD'den ilişkisel şema oluşturmak için temel işlevsellik sağlar. Kullanıcı, gerekirse oluşturulan tabloları el ile değiştirmelidir.
Tablolar arasında birden fazla ilişki bulunduğunda SchemaGen, iki tablo arasında yer alan tüm anahtarları içeren tek bir ilişki oluşturmaya çalışır. Bu sınırlama, Transact-SQL hatasının nedeni olabilir.
XML verilerini bir veritabanına toplu yüklerken, eşleme şemasında veritabanı sütununa eşlenmiş en az bir öznitelik veya alt öğe olmalıdır.
XML Toplu Yükleme kullanarak tarih değerleri ekliiyorsanız, değerlerin (-)CCYY-AA-GG((+-)TZ) biçiminde belirtilmesi gerekir. Bu tarih için standart XSD biçimidir.
Bazı özellik bayrakları diğer özellik bayraklarıyla uyumlu değildir. Örneğin toplu yükleme, Keepidentity=false ile birlikte Ignoreduplicatekeys=true değerini desteklemez. Keepidentity=false olduğunda, toplu yük sunucunun anahtar değerlerini oluşturmasını bekler. Tabloların anahtarında kimlik kısıtlaması olmalıdır. Sunucu yinelenen anahtarlar oluşturmaz; başka bir deyişle Ignoreduplicatekeys değerinin true olarak ayarlanmasına gerek yoktur. Ignoreduplicatekeys yalnızca gelen verilerden satır içeren bir tabloya birincil anahtar değerleri yüklenirken true olarak ayarlanmalıdır ve birincil anahtar değerlerinde çakışma olasılığı vardır.