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
Yukarıdaki şema kodunu kopyalayıp, bir metin dosyasına yapıştırın.Dosyayı xsdType.xml kaydedin.
Ş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"
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.