Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Bir XSD şemasında xsd:type özniteliği, bir eleman veya özniteliğin XSD veri tipini belirtir. Veritabanından veri çıkarmak için bir XSD şeması kullanıldığında, belirtilen veri türü biçimlendirmek için kullanılır.
Bir şemada bir XSD tipi belirtmekten, sql:datatype açıklamasını kullanarak Microsoft SQL Server veri tipini de belirtebilirsiniz. xsd:type ve sql:datatype öznitelikleri, XSD veri tipleri ile SQL Server veri türleri arasındaki eşlemeyi kontrol eder.
xsd:type Özniteliği
xsd:type özniteliğini, bir özniteliğin veya bir sütuna eşlenen öğenin XML veri tipini belirtmek için kullanabilirsiniz. xsd:type, sunucudan döndürülen belgeyi ve yürütülen XPath sorgusunu etkiler. Bir XPath sorgu, xsd:type içeren bir eşleme şemasına karşı yürütüldüğünde, XPath sorguyu işlerken belirtilen veri tipini kullanır. XPath'ın xsd:type kullanımıyla ilgili daha fazla bilgi için Mapping XSD Data Types to XPath Data Types (SQLXML 4.0) bölümüne bakınız.
Geri dönen bir belgede, tüm SQL Server veri türleri string temsilcilerine dönüştürülür. Bazı veri türleri ek dönüşümler gerektirir. Aşağıdaki tablo, çeşitli xsd:type değerleri için kullanılan dönüşümleri listeler.
| XSD veri tipi | SQL Server dönüşümü |
|---|---|
| Boolean | DÖNÜŞTÜR (bit, SÜTUN) |
| Date | SOL(DÖNÜŞTÜRÜCÜ(NVARCHAR(4000), SÜTUN, 126), 10) |
| decimal | DÖNÜŞTÜR (PARA, SÜTUN) |
| id/idref/idrefs | id-prefix + CONVERT(nvarchar(4000), COLUMN, 126) |
| nmtoken/nmtokens | id-prefix + CONVERT(nvarchar(4000), COLUMN, 126) |
| Time | SUBSTRING(CONVERT(nvarchar(4000), COLUMN, 126), 1+CHARINDEX(N'T', CONVERT(nvarchar(4000), COLUMN, 126)), 24) |
| Diğerleri | Ek dönüşüm yok |
Uyarı
SQL Server tarafından döndürülen bazı değerler, xsd:type kullanılarak belirlenen XML veri tipleriyle uyumlu olmayabilir; ya dönüşüm mümkün olmadığı için (örneğin, "XYZ"i ondalık veri türüne dönüştürmek) ya da değer o veri tipinin aralığını aştığı için (örneğin, -100000 UnsignedShort XSD tipine dönüştürülmüştür). Uyumsuz tür dönüşümleri, geçerli olmayan XML belgelerine veya SQL Server hatalarına yol açabilir.
SQL Server Veri Tiplerinden XSD Veri Tiplerine Eşleme
Aşağıdaki tablo, SQL Server veri tiplerinden XSD veri tiplerine belirgin bir eşlemeyi göstermektedir. SQL Server tipini biliyorsanız, bu tablo XSD şemasında belirtebileceğiniz karşılık gelen XSD tipini sağlar.
| SQL Server veri türü | XSD veri tipi |
|---|---|
| bigint | long |
| binary | base64Binary |
| bit | mantıksal |
| char | string |
| datetime | dateTime |
| decimal | decimal |
| float | çift |
| image | base64Binary |
| int | int |
| para | decimal |
| nchar | string |
| ntext | string |
| nvarchar | string |
| Sayısal | decimal |
| Gerçek | float |
| smalldatetime | dateTime |
| smallint | kısa |
| küçük para | decimal |
| sql_variant | string |
| sysname | string |
| text | string |
| zaman etiketi | dateTime |
| tinyint | unsignedByte |
| varbinary | base64Binary |
| varchar | string |
| uniqueidentifier | string |
sql:datatype Açıklaması
SQL Server veri tipini belirtmek için sql:datatype açıklaması kullanılır; Bu açıklama şu durumlarda belirtilmelidir:
XSD dateTime, date veya time tipinden bir dateTimeSQL Server sütununa toplu yüklüyorsunuz. Bu durumda, SQL Server sütun veri tipini sql:datatype="dateTime" kullanarak belirlemeniz gerekir. Bu kural updategramlar için de geçerlidir.
SQL Server uniqueidentifier tipine sahip bir sütuna toplu yükleme yapıyorsunuz ve XSD değeri, braketleri ({ ve }) içeren bir GUID'dir. sql:datatype="uniqueidentifier" belirttiğinizde, destekler değer sütuna eklenmeden önce çıkarılır. sql:datatype belirtilmediyse, değer braketlerle birlikte gönderilir ve ekleme veya güncelleme başarısız olur.
XML veri tipi base64Binary , çeşitli SQL Server veri tiplerine (ikili, görüntü veya varbinary) eşlenir. XML veri tipini base64Binary'yi belirli bir SQL Server veri tipine eşlemek için sql:datatype açıklamasını kullanın. Bu açıklama, özniteliğin eşlendiği sütunun açık SQL Server veri tipini belirtir. Bu, veri veritabanlarında saklanırken faydalıdır. sql:datatype açıklamasını belirterek, açık SQL Server veri tipini belirleyebilirsiniz.
Genel olarak şemada sql:datatype belirtmeniz önerilir.
Örnekler
Aşağıdaki örneklerle çalışma örnekleri oluşturmak için belirli gereksinimleri karşılamanız gerekir. Daha fazla bilgi için Gereksinimler için SQLXML Örnekleri Çalışması için Gereksinimlere bakınız.
A. xsd:type belirtilmesi
Bu örnek, şemadaki xsd:type özniteliği kullanılarak belirlenen bir XSD tarih türünün ortaya çıkan XML belgesini nasıl etkilediğini gösterir. Şema, AdventureWorks veritabanındaki Sales.SalesOrderHeader tablosunun XML 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ında SQL Server'dan tarih değeri döndüren üç öznitelik vardır. Şema:
OrderDate özniteliğinde xsd:type=date belirtir, SQL Server tarafından OrderDate özniteliği için döndürülen değerin tarih kısmı gösterilir.
ShipDate özniteliğinde xsd:type=time belirtir, SQL Server tarafından ShipDate özniteliği için döndürülen değerin zaman kısmı gösterilir.
DueDate özniteliğinde xsd:type belirtilmediğinde, SQL Server tarafından döndürülen aynı değer gösterilir.
Örnek XPath sorgusunu şema karşısında test etmek için
Yukarıdaki şema kodunu kopyalayıp metin dosyasına yapıştırın. Dosyayı xsdType.xmlolarak kaydet.
Aşağıdaki şablonu kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı aynı dizinde xsdTypeT.xml olarak kaydet xsdType.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="xsdType.xml"> /Order </sql:xpath-query> </ROOT>Eşleme şeması (xsdType.xml) için belirtilen dizin yolu, şablonun kaydedildiği dizine görecelidir. Mutlak bir yol da belirtilebilir, örneğin:
mapping-schema="C:\SqlXmlTest\xsdType.xml"Şablonu çalıştırmak için SQLXML 4.0 Test Script'i (Sqlxml4test.vbs) oluşturun ve kullanın.
Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.
Kısmi 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ıdır:
<?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 veri tipini sql:datatype kullanılarak belirtmek
Çalışma örneği için XML Toplu Yükleme Örneklerinde Örnek G (SQLXML 4.0) bölümüne bakınız. Bu örnekte, "{" ve "}" dahil bir GUID değeri toplu yüklenir. Bu örnekteki şema, SQL Server veri tipini uniqueidentifier olarak tanımlamak için sql:datatype belirtir. Bu örnek, sql:datatype'ın şemada belirtilmesi gerektiğini gösterir.