Aracılığıyla paylaş


Veri türü Coercions (xdr şeması)

Önemli notÖnemli

Bu konuda eski uygulamalar için bir referans olarak dahil edilir.Bu özelliği yok ileride geliştirme çalışmaları yapılacaktır.Bu özellik yeni geliştirme çalışması kullanmaktan kaçının.Bunun yerine, açıklama eklenmiş xsd şemaları, xml görünümlerini oluşturmak için kullanın.Daha fazla bilgi için bkz: Açıklama eklenmiş xsd şemaları (SQLxml 4.0) Giriº.xsd şemaları için varolan açıklama eklenmiş xdr şemalarını dönüştürebilirsiniz.Daha fazla bilgi için bkz: Açıklama eklenmiş xdr şemalarını eşdeğer xsd şemaları (SQLxml 4.0) dönüştürme.

Bir öðe ya da öznitelik veri türünü bir xdr şeması içinde belirtilebilir.Veritabanından veri ayıklamak için bir xdr şeması kullanıldığında, uygun veri bir sonucu olarak bir sorgu çıktı biçimidir.The dt:type and sql:datatype annotations are used to control the mapping between XDR data types and Microsoft SQL Server data types.

dt:type

Kullanabileceğiniz dt:type öznitelik xml veri türü bir özniteliğin veya öğenin sütun. eşler belirtmek içinThe dt:type attribute can be specified on <AttributeType> or <ElementType>.The dt:type affects the document returned from the server and also the XPath query executed.Ne zaman bir XPath sorgusu yürütüldüğünde eşleme şema içeren bir karşı dt:type, XPath kullandığı veri türü belirtilen işlerken sorgu.XPath nasıl kullandığı hakkında daha fazla bilgi için dt:type, bkz: XPath veri türleri (SQLxml 4.0).

Döndürülen bir belgede, dize sunumlarını tüm sql Server veri türleri dönüştürülür.Bazı veri türleri ek dönüşümleri gerektirir.Aşağıdaki tablo için çeşitli kullanılan dönüştürmeleri listeler dt:type değerler.

xml veri türü

sql Server dönüştürme

bit

convert (bit, sütun)

tarih

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

Fixed.14.4

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)

saat/saat.TZ

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 diğer bazı SQL Server değerler dönüştürülemez bazı xml veri türleri ya da dönüştürme mümkün olmadığı için (örneğin, "xyz" Sayı veri türü için) ya da o veri türünün aralık değerini aştığı için (örneğin,-100000 dönüştürülmesi için ui2).Uyumsuz derleme zamanı hatası, geçersiz xml belgeleri veya sql Server hata ile sonuçlanabilir.

xml veri türleri için sql Server veri türleri eşleme

Tablo doğal eşlemesinden gösterir SQL Server veri türü için xml veri türleri.

sql Server veri türü

xml veri türü

bigint

i8

binary

bin.base64

bit

boolean

char

char

datetime

datetime

decimal

r8

float

r8

image

bin.base64

int

int

money

r8

nchar

string

ntext

string

nvarchar

string

numeric

r8

real

r4

smalldatetime

datetime

smallint

i2

smallmoney

fixed.14.4

sysname

string

text

string

timestamp

ui8

tinyint

ui1

varbinary

bin.base64

varchar

string

uniqueidentifier

uuid

SQL:DataType

xml veri türü bin.base64 çeşitli Microsoft eşler SQL Server veri türleri (binary, image, varbinary).To clearly map the XML data type bin.base64 to a specific SQL Server data, the sql:datatype annotation is used.sql:datatype specifies the SQL Server data type of the column to which the attribute maps.

Bu verileri veritabanında depolandığında kullanışlıdır.Belirterek sql:datatype ek açıklama, açıkça tanımlamak SQL Server veri türü.Veri öğe sonra belirtilen türü olarak saklanan sql:datatype.

The sql:datatype annotation supports all SQL Server built-in data types.(Kullanıcı tanımlı veri türleri veya eşanlamlıları desteklenmez.) Precision and scale are also supported, for example, sql:datatype="nvarchar" and sql:datatype="nchar(10)".

xdr belirtme ve SQL Server eşleme şemada veri türleri sql sorguları gereksiz veri dönüşümleri ortadan kaldırmak yardımcı olabilirÖrneğin, XPath dönüştürme gerekir SQL Server veri türü için xdr veri türü ve sonra türünden xdr için XPath türü.Zaman sql:datatype veya xdr türü ve belirtilen XPath belirler, dönüştürme gereksiz, XPath it. yapmaz

De durum birincil anahtar sütunları, önemli performans geliştirme, bu dönüşümleri sağlanmasına yol açabilir.Örneğin, aşağıdaki sorgu genellikle dönüştürmeye doğru sonuçlar garanti etmek için (nvarchar) dize CustomerID gerektirir:

Customer[@CustomerID='ALFKI']

Şema içinde CustomerID işaretiyle, sql:datatype="nvarchar"XPath kaçının gereksiz verileri dönüştürme.

Ö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.Dt:type bir öznitelik belirtin

Bu xdr şemasında dt:type üzerinde belirtilen OrdDate ve ÖdemeTarihi öznitelikleri.

İçin ReqDate öznitelik, yok XPath veri türü belirtilir.Bu nedenle, XPath döndürür SQL Server datetime deðerlerini İstenenTarih alınan sütun veritabanı.

"Tarih" XPath veri türü belirtildiğinde OrdDate öznitelik.XPath verir yalnızca tarih bölümünü (ve hiçbir saat) değerler SiparişTarihi alınan sütun.

"saat" XPath veri türü ÖdemeTarihi öznitelik belirtildi.XPath verir yalnızca saat bölümünü (ve tarih) değerler SevkiyatTarihi alınan sütun.

<?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="Orders">
    <AttributeType name="OID" />
    <AttributeType name="CustID"  />
    <AttributeType name="OrdDate" dt:type="date" />
    <AttributeType name="ReqDate" />
    <AttributeType name="ShipDate" dt:type="time" />

    <attribute type="OID" sql:field="OrderID" />
    <attribute type="CustID" sql:field="CustomerID" />
    <attribute type="OrdDate" sql:field="OrderDate" />
    <attribute type="ReqDate" sql:field="RequiredDate" />
    <attribute type="ShipDate" sql:field="ShippedDate" />
</ElementType>
</Schema>

Ö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ı dataTypeXdr.xml kaydedin.

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

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="dataTypeXdr.xml">
        /Order[@OID=43860]
      </sql:xpath-query>
    </ROOT>
    
  3. Bu url şablonu yürütür:

    http://IISServer/AdventureWorks/template/dataTypeXdrT.xml
    

Sonuç küme aşağıdadır:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Order OID="43860" CustID="1" OrdDate="2001-08-01" ReqDate="2001-08-13T00:00:00" ShipDate="00:00:00" /> 
</ROOT>

B.SQL:DataType bir öznitelik belirtin

Bu örnekte, sql:datatype tanımlamak için kullanılan SQL Server veri türünü LargePhoto sütun.

<?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="ProductPhoto" sql:relation="Production.ProductPhoto">
    <AttributeType name="PhotoID" />
    <AttributeType name="filename" />
    <AttributeType name="photo" sql:datatype="image"  />

    <attribute type="PhotoID" sql:field="ProductPhotoID" />
    <attribute type="filename" sql:field="LargePhotoFileName" />
    <attribute type="photo" sql:field="LargePhoto" />
</ElementType>
</Schema>

Ö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ı DataTypeXdr2.xml kaydedin.

  2. Aşağıdaki şablon kopyalama ve bir metin dosyasına yapıştırın.Dosyayı DataTypeXdr2T.xml DataTypeXdr2.xml kaydettiğiniz aynı dizine kaydedin.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="DataTypeXdr2.xml">
        /ProductPhoto[@PhotoID="100"]
      </sql:xpath-query>
    </ROOT>
    

    Dizin yol (DataTypeXdr2.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:\MyDir\DataTypeXdr2.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.

Sonuç küme aşağıdadır:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
    <ProductPhoto PhotoID="100" filename="racer02_red_large.gif" 
 photo="Binary_base64_image_returned_here"/> 
</ROOT>

Ayrıca bkz.

Başvuru