Aracılığıyla paylaş


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

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

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

Öznitelik xsd:type

Kullanabileceğiniz xsd:type bir öznitelik veya öğe için bir sütun eşleyen XML veri türünü belirtmek için öznitelik'ı tıklatın. The xsd:type affects the document that is returned from the server and also the XPath query that is executed.Içeren bir eşleme şeması karşı bir XPath sorgusu gerçekleştirildiğinde xsd:typeSorgu işlerken XPath belirtilen veri türünü kullanır. Hakkında daha fazla bilgi için XPath kullanır. xsd:type, bkz: XPath veri türleri için (SQLXML 4.0) XSD veri türlerini eşleştirme.

Döndürülen bir belgedeki tüm SQL Server veri türleri, dize sunumlarını dönüştürülür. Bazı veri türleri ek dönüştürmeleri gerekir.Aşağıdaki tablo çeşitli için kullanılan dönüştürmeleri listeler. xsd:type Değerler.

XSD veri türü

SQL Server dönüştürme

Boole

CONVERT (bit, SÜTUN)

Date

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

Ondalık

CONVERT (para, SÜTUN)

ID/idref/idrefs

Kimliği önek + CONVERT(nvarchar(4000), SÜTUN, 126)

NMTOKEN/nmtokens

Kimliği önek + 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

Bazı tarafından döndürülen değerler SQL Server kullanılarak belirtilen XML veri türleriyle uyumlu olmayabilir. xsd:type, ya da dönüştürme mümkün olmadığı için (örneğin, "XYZ" dönüştürme bir decimal veri türü) veya o veri tipi aralık değeri aştığı için (örneğin,-100000 dönüştürüldü bir UnsignedShort XSD türü). Geçersiz XML belgeleri'ndeki veya uyumsuz türü dönüşümlerinin neden olabilir SQL Server hata.

SQL Server veri türleri ' için XSD veri türlerini eşleştirme

Aşağıdaki tabloda belirgin bir eşleme gösterilir. SQL Server XSD veri türlerini veri türleri. Bilip bilmediğinizi SQL Server Bu tablo, tür, belirtebileceğiniz XSD şemada karşılık gelen bir 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

Ek açıklama SQL:DataType

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 dateTimeSQL Server column from an XSD dateTime, date, or time type.Bu durumda, tanımlamalısınız SQL Server sütun kullanarak veri türü sql:datatype="dateTime". Bu kural, updategrams için de geçerlidir.

  • You are bulk loading into a column of SQL Serveruniqueidentifier type and the XSD value is a GUID that includes braces ({ and }).Belirttiğiniz zaman sql:datatype="uniqueidentifier", ayraçlar içinde eklenmeden önce değeri kaldırılır sütun. If sql:datatype belirtilmemişse, değer, ayraçları ve ekleme veya güncelleştirme başarısız gönderilir.

  • XML veri türü base64Binary çeşitli eşlenir SQL Server veri türleri ((ingilizce)binary, image, veya varbinary). XML veri türünü eşleştirmek için base64Binary Belirli bir SQL Server veri türü, kullanmanız sql:datatype Ek açıklama. Bu ek açıklama açıkça belirtir. SQL Server Hangi sütunun veri türünü öznitelik eşlemeleri. Bu veri veritabanlarında depolandığında kullanışlıdır.Belirterek sql:datatype Ek açıklamayı, açık belirleyebilir SQL Server Veri Türü.

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

Ö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.

C.Xsd:type belirtme

Bu örnek, bir XSD nasıl gösterir. date kullanılarak belirtilen türü xsd:type öznitelik şemada sonuç XML belgesi etkiler. Şemayı bir XML AdventureWorks veritabanındaki Sales.SalesOrderHeader Tablo görünümünü sağlar.

<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ı bir tarih değeri veren üç özniteliği yok SQL Server. Zaman şema:

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

  • Belirtir xsd:type=time üzerinde ShipDate özniteliği, tarafından döndürülen değeri saat bölümüSQL Server için ShipDate özniteliği görüntülenir.

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

Şemaya örnek bir XPath sorgusu sınamak için

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

  2. Şu şablonu kopyalayıp, bir metin dosyasına yapıştırın.Dosyayı xsdTypeT.xml xsdType.xml kaydettiğiniz aynı dizine kaydedin.

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

    Dizin yol şablonu kaydedildiği dizine göre (xsdType.xml) eşleme şemada için belirtildi.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ütmek kullanarak 4.0 sorgular..

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

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

Bu, eşdeğer XDR şeması oluşur:

<?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

Bir çalışan örneği için örnek G, bkz: XML toplu yükleme örnekleri (SQLXML 4.0). Bu örnekte, bir GUID değeri içeren "{" ve "}" toplu yüklenir.Bu örnek şemada belirtir. sql:datatype tanımlamak için SQL Server veri türü uniqueidentifier. Bu bir örnek görülmektedir ne zaman sql:datatype şemada belirtilmeli.