Aracılığıyla paylaş


Yönergeleri ve xml Bulk Load (SQLxml 4.0) kısıtlamaları

xml Bulk Load kullandığınızda, aşağıdaki yönergeleri ve sınırlamaları hakkında bilgi sahibi olmanız gerekir:

  • Satır içi şemalar desteklenmez.

    Kaynak xml belgesindeki satır içi şema varsa, bu şema xml Bulk Load yoksayar.xml Bulk Load dış xml veri için eşleme şema belirtin.Bir düğüm adresindeki eşleme şema kullanarak belirtemezsiniz xmlns = "x: schema" öznitelik.

  • Bir xml belgesi iyi biçimlendirilmiş olmalarının denetlenir, ancak değil doğrulanır.

    xml Bulk Load denetler xml belgesi iyi biçimlendirilmiş olup olmadığını belirlemek için — yani, xml emin uyan World Wide Web Consortium'ın xml 1.0 önerisi, sözdizimi gereksinimlerini.Belgesi iyi biçimlendirilmiş xml Bulk Load işlemi iptal eder ve bir hata döndürür.Belgenin bir parçası olduğunda bunun tek istisnası olur (örneğin, belgenin kök öğesi yok varsa), hangi durum xml Bulk yükü belgeyi yükler.

    xml Bulk Load tanımlanan veya xml veri dosyasında başvurulan xml verilerini veya dtd şema ile belge doğrulamaz.Buna ek olarak, xml Bulk Load sağlanan eşleme şema karşı xml veri dosyasını doğrulamaz.

  • xml giriş bilgileri dikkate alınmaz.

    xml Bulk Load yok sayar önce ve sonra tüm bilgileri <kök> öğesi xml belgesi.Örneğin, xml Bulk Load herhangi xml bildirimleri, iç dtd tanımlarını, dış dtd başvuruları, yorum ve benzeri yok sayar.

  • (Müşteri ve CustOrder arasında gibi) iki tablo arasında birincil anahtarı yabancı anahtar ilişkileri tanımlayan bir eşleme şeması varsa, birincil anahtar tablosuyla ilk şemada açıklanan olmalıdır.yabancı anahtar içeren tablo sütun şema içinde yer almalıdır.Bunun nedeni, tablolar şemada tanımlanan sipariş bunları veritabanına yüklemek için kullanılan sipariş olmasıdır.For example, the following XDR schema will produce an error when it is used in XML Bulk Load because the <Order> element is described before the <Customer> element.CustOrder MüşteriNo sütunundaki MüşteriNo birincil anahtar sütunundaki Cust başvuran yabancı anahtar sütununa olan tablo.

    <?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 taşma sütunları kullanarak belirtmez, sql:overflow-field ek açıklama, xml Bulk Load yoksayar tüm verileri, xml belgesindeki var ancak değil anlatılan eşleme şema.

    xml Bulk Load uygular, belirttiğiniz eşleme şema her bulduğu bilinen etiketleri xml veri akışı.xml belgesinde var, ancak şemada açıklanan veriler göz ardı eder.Örneğin, açıklayan bir eşleme şeması vardır varsayalım bir <Müşteri> öğesi.xml veri dosyasına sahip bir <AllCustomers> Tümünü kapsayan (şemada açıklanan) etiketi kök <Müşteri> öğeleri:

    <AllCustomers>
      <Customer>...</Customer>
      <Customer>...</Customer>
       ...
    </AllCustomers>
    

    Bu durum, xml Bulk Load yoksayar <AllCustomers> öğesi eşleme sırasında başlar ve <Müşteri> öğesi.xml Bulk Load şemada açıklanan, ancak xml belgesindeki varolan öğeleri yoksayar.

    İçeren başka bir xml kaynak veri dosyasına göz önünde <Sipariş> öğeleri.Bu öğeleri eşleme şemada açıklanmaktadır:

    <AllCustomers>
      <Customer>...</Customer>
        <Order> ... </Order>
        <Order> ... </Order>
         ...
      <Customer>...</Customer>
        <Order> ... </Order>
        <Order> ... </Order>
         ...
      ...
    </AllCustomers>
    

    xml Bulk Load sayıyor bunlar <Sipariş> öğeleri.But if you use the sql:overflow-fieldannotation in the schema to identify a column as an overflow column, XML Bulk Load stores all unconsumed data in this column.

  • İçin cdata bölümler ve varlýk baþvurularý çevrilir, dize veritabanında depolanmadan önce eşdeğerleri.

    Bu örnekte, bir cdata bölümü için değer sarar <Şehir> öğesi.XML Bulk Load extracts the string value ("NY") before it inserts the <City> element into the database.

        <City><![CDATA[NY]]> </City>
    

    xml Bulk Load varlık başvuruları korumaz.

  • Bir öznitelik için varsayılan değer eşleme şema belirtir ve xml kaynak verileri bu öznitelik içermiyor, xml Bulk Load varsayılan değerini kullanır.

    Aşağıdaki örnek xdr şeması için varsayılan bir değer atar İşeAlmaTarihi öznitelik:

    <?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="2004-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 veri İşeAlmaTarihi saniye öznitelik eksik <müşterilerin> öğesi.When XML Bulk Load inserts the second <Customers> element into the database, it uses the default value that is specified in the schema.

    <ROOT>
      <Customers CustomerID="1" HireDate="2003-01-01" Salary="10000" />
      <Customers CustomerID="2" Salary="10000" />
    </ROOT>
    
  • The sql:url-encode annotation is not supported:

    İçinde xml veri girişi bir url belirtin ve verileri o konumdan okumak için Bulk Load beklediğiniz.

    Eşleme şemada tanımlanan tabloları oluşturulur (veritabanı mevcut olmalıdır).Veritabanında bir veya daha fazla tablo zaten varsa, SGDropTables özellik, bu zaten varolan tabloları bırakılan ve yeniden oluşturulması olup olmadığını belirler.

  • Belirtirseniz, SchemaGen özellik (örneğin, SchemaGen = true), eşleme şemada tanımlanan tabloları oluşturulur.Ancak SchemaGen (gibi birincil anahtar/yabancı anahtar kısıtlamaları) bu tabloları üzerinde kısıtlamalar ile bir özel durum oluşturma: Bir ilişkide birincil anahtar oluşturan xml düğümleri bir xml türü kimliğine sahip olarak tanımlanır (yani, type="xsd:ID" xsd için) ve SGUseID özellik true için küme SchemaGen, sonra sadece olan Kimliğinden oluşturulan birincil anahtarlar yazılan düğümlerini, ancak birincil anahtar yabancı anahtar ilişkileri oluşturulan şema ilişkileri. Eşleme'den

  • SchemaGenxsd şema özellikleri ve uzantıları ilişkisel üretmek için kullanmaz SQL Server şema.

  • Belirtirseniz, SchemaGen özellik (örneğin, SchemaGen = true) Bulk belirtilen yük, yalnızca tabloları (ve paylaşılan ad görünümlerini) üzerinde güncelleştirilir.

  • SchemaGen yalnızca açıklama eklenmiş xsd ilişkisel şema oluşturmak için temel işlevleri sağlar.Kullanıcı oluşturulan tabloları el ile gerekiyorsa değiştirmelisiniz.

  • Where more than relationship exists between tables,SchemaGen tries to create a single relationship that includes all the keys involved between the two tables.Bu sınırlama neden olabilir bir Transact-SQL hata.

  • Toplu olduğunda xml verileri bir veritabanına yükleniyor, bulunması en az bir öznitelik veya alt öğe bir veritabanına eşlenen eşleme şemada sütun.

  • Tarih değerleri xml Bulk Load kullanarak ekliyorsanız, değerleri (-)ccyy-mm-dd((+-)tz) biçiminde. belirtilmelidir.Bu standart xsd için tarih biçimidir.

  • Bazı özellik bayrakları diğer özellik bayrakları ile uyumlu değildir.Örneğin, toplu yükleme desteklemediği Ignoreduplicatekeys=true ile birlikte Keepidentity=false.Zaman Keepidentity=false, toplu yükleme beklediği sunucuya üretmek anahtar değerleri.Tablolar olmalıdır bir IDENTITY kısıtlamasının anahtar.The server will not generate duplicate keys, which means that there is no need for Ignoreduplicatekeys to be set to true.Ignoreduplicatekeys should be set to true only when uploading primary key values from the incoming data into a table that has rows and there is a potential for conflict of primary key values.