Aracılığıyla paylaş


Veri türü Coercions ve SQL:datatype ek açıklama (SQLxml 4.0)

xsd şemasındaki xsd:type özniteliği belirtir xsd veri türü bir öğe veya öznitelik.xsd şeması veritabanından veri ayıklamak için kullanıldığında, belirtilen veri türü verileri biçimlendirmek için kullanılır.

Şemada bir xsd türü belirtmenin yanı sıra, ayrıca bir Microsoft belirtebilirsiniz SQL Server veri türü kullanarak sql:datatype ek açıklama.The xsd:type and sql:datatype attributes control the mapping between XSD data types and SQL Server data types.

xsd: type özniteliği

Kullanabileceğiniz xsd:type öznitelik xml veri türü bir özniteliğin veya öğenin sütun. eşler belirtmek içinThe xsd:type affects the document that is returned from the server and also the XPath query that is executed.Ne zaman bir XPath sorgusu yürütüldüğünde içeren bir eşleme şema karşı xsd:type, XPath kullandığı belirtilen veri türü, işler sorgu.XPath nasıl kullandığı hakkında daha fazla bilgi için xsd:type, bkz: XPath veri türleri (SQLxml 4.0) xsd veri türlerini eşleştirme.

Dönen bir belgedeki tüm SQL Server veri türleri dönüştürülür dize temsili.Bazı veri türleri ek dönüşümleri gerektirir.Aşağıdaki tablo için çeşitli kullanılan dönüştürmeleri listeler xsd:type değerler.

xsd veri türü

sql Server dönüştürme

Boolean

convert (bit, sütun)

Date

LEFT(Convert(nvarchar(4000), sütun, 126), 10)

Ondalık

convert (para, sütun)

IDREF/kimlik/idrefs

kimlii öneki + CONVERT(nvarchar(4000), sütun, 126)

nmtoken/nmtokens

kimlii öneki + CONVERT(nvarchar(4000), sütun, 126)

Time

SUBSTRING(Convert(nvarchar(4000), sütun, 126), 1 + CHARINDEX (n't', CONVERT(nvarchar(4000), sütun, 126)), 24)

Tüm diğerleri

Ek dönüştürme

Not

Tarafından döndürülen değerlerin bazılarını SQL Server olmayabilir kullanarak belirtilen xml veri türleri ile uyumlu xsd:type, ya da dönüştürme mümkün olmadığı için (örneğin, "xyz" dönüştürme için bir decimal veri türü) veya o veri türünün aralık değerini aştığı için (örneğin,-100000 dönüştürülmesi için bir UnsignedShort xsd türü).Geçersiz xml belgelerinde, veya uyumsuz derleme zamanı hatası neden SQL Server hataları.

sql Server veri türleri için xsd veri türlerini eşleştirme

Aşağıdaki tablo belirgin bir eşlemesinden gösterir SQL Server veri türleri için xsd veri türlerini.Biliyorsanız SQL Server yazın, bu tablo , xsd şeması. belirtebilirsiniz karşılık gelen xsd türü sağlar

sql Server veri türü

xsd veri türü

bigint

long

binary

base64Binary

bit

boolean

char

string

datetime

dateTime

decimal

decimal

float

double

image

base64Binary

int

int

money

decimal

nchar

string

ntext

string

nvarchar

string

numeric

decimal

real

float

smalldatetime

dateTime

smallint

short

smallmoney

decimal

sql_variant

string

sysname

string

text

string

timestamp

dateTime

tinyint

unsignedByte

varbinary

base64Binary

varchar

string

uniqueidentifier

string

SQL:DataType ek açıklama

The sql:datatype annotation is used to specify the SQL Server data type; this annotation must be specified when:

  • You are bulk loading into a dateTime SQL Server column from an XSD dateTime, date, or time type.Bu durum, sizi tanımak SQL Server kullanarak sütun veri türü sql:datatype="dateTime".Bu kural, Updategram'lar için de geçerlidir.

  • You are bulk loading into a column of SQL Server uniqueidentifier type and the XSD value is a GUID that includes braces ({ and }).Ne zaman belirttiğiniz sql:datatype="uniqueidentifier", kaşlı ayraçlar değeri önce sütun. eklenir kaldırıldıIf sql:datatype is not specified, the value is sent with the braces, and the insert or update fails.

  • xml veri türü base64Binary için çeşitli haritalar SQL Server veri türleri (binary, image, veya varbinary).xml veri türü eşleme base64Binary için belirli bir SQL Server veri türünü kullanmak sql:datatype ek açıklama.Bu ek açıklama açıkça belirtir SQL Server veri türü sütun olan öznitelik eşlemeleri.Bu verilerin veritabanlarında depolandığında kullanışlıdır.Belirterek sql:datatype ek açıklama, açıkça tanımlamak SQL Server veri türü.

Genellikle, belirttiğiniz önerilir sql:datatype şema.

Örnekler

Aşağıdaki örnekler kullanarak çalışma örnekleri oluşturmak için belirli gereksinimleri karşılaması gerekir.Daha fazla bilgi için bkz: SQLxml örnekleri çalıştırma gereksinimleri.

A.Xsd: type belirtme

Bu örnek, bir xsd nasıl gösterir date kullanarak belirtilen tür xsd:type şema öznitelik etkiler ortaya çıkan xml belgesi.Şemayı bir xml Sales.SalesOrderHeader Tablo görünümünü sağlar AdventureWorks2008R2 veritabanı.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Order" sql:relation="Sales.SalesOrderHeader">
     <xsd:complexType>
       <xsd:attribute name="SalesOrderID" type="xsd:string" /> 
       <xsd:attribute name="CustomerID"   type="xsd:string" /> 
       <xsd:attribute name="OrderDate"    type="xsd:date" /> 
       <xsd:attribute name="DueDate"  /> 
       <xsd:attribute name="ShipDate"  type="xsd:time" /> 
     </xsd:complexType>
  </xsd:element>
</xsd:schema>

Bu xsd şeması'nda, tarih değer almak üç özniteliği vardır SQL Server.Zaman şeması:

  • Belirtir xsd:type=date , SiparişTarihi öznitelik, tarih bölümü tarafından döndürülen değeri SQL Server için SiparişTarihi öznitelik görüntülenir.

  • Belirtir xsd:type=time , ÖdemeTarihi öznitelik tarafından döndürülen değeri bir saat parçası SQL Server için ÖdemeTarihi öznitelik görüntülenir.

  • Belirtmek xsd:type , DueDate öznitelik tarafından döndürülen aynı değeri SQL Server görüntülenir.

Örnek XPath sorgusu şema karşı sınamak için

  1. Yukarıdaki şema kodu kopyalayın ve bir metin dosyasına yapıştırın.Dosyayı xsdType.xml kaydedin.

  2. Aşağıdaki şablon kopyalama ve bir metin dosyasına yapıştırın.Olarak xsdTypeT.xml ile aynı dizinde xsdType.xml kaydettiğiniz dosyayı kaydedin.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="xsdType.xml">
        /Order
      </sql:xpath-query>
    </ROOT>
    

    Dizin yol (xsdType.xml) eşleme şema şablonun kaydedileceği dizini ile ilişkili olduğu için belirtilen.Mutlak bir yol da, örneğin belirtilebilir:

    mapping-schema="C:\SqlXmlTest\xsdType.xml"
    
  3. Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) şablonu yürütmek için kullanın.

    Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

Kısmi bir sonuç küme aşağıdadır:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Order SalesOrderID="43659" 
         CustomerID="676" 
         OrderDate="2005-07-01" 
         DueDate="2005-07-13T00:00:00" 
         ShipDate="00:00:00" /> 
  <Order SalesOrderID="43660" 
         CustomerID="117" 
         OrderDate="2005-07-01" 
         DueDate="2005-07-13T00:00:00" 
         ShipDate="00:00:00" /> 
 ...
</ROOT>

Eşdeğer xdr şeması budur:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="Order" sql:relation="Sales.SalesOrderHeader">
    <AttributeType name="SalesOrderID" />
    <AttributeType name="CustomerID"  />
    <AttributeType name="OrderDate" dt:type="date" />
    <AttributeType name="DueDate" />
    <AttributeType name="ShipDate" dt:type="time" />

    <attribute type="SalesOrderID" sql:field="OrderID" />
    <attribute type="CustomerID" sql:field="CustomerID" />
    <attribute type="OrderDate" sql:field="OrderDate" />
    <attribute type="DueDate" sql:field="DueDate" />
    <attribute type="ShipDate" sql:field="ShipDate" />
</ElementType>
</Schema>

B.SQL:DataType kullanarak sql veri türü belirtme

Çalışma örnek için bkz: örnek g xml Bulk Load örnekleri (SQLxml 4.0).Bu örnekte, bir GUID değeri "{" da dahil olmak üzere ve "}" Toplu yüklenir.Bu örnekte şema belirtir sql:datatype tanımlamak için SQL Server veri türü olarak uniqueidentifier.Bu örnek göstermek sql:datatype belirtilmesi gerekir şema.