Share via


Yazılı xml Untyped xml karşılaştırılması

Değişkenleri ve parametreleri sütunları oluşturmak xml türü.İsteğe bağlı olarak ilişkilendirebileceğiniz bir koleksiyon ile bir değişkeni, parametre veya sütun, xml şemaları, xml türü.Bu durum, xml veri türü örnek olarak adlandırılan yazılı.Aksi durumda, xml örnek denir untyped.

İyi biçimlendirilmiş xml ve xml veri türü

The xml data type implements the ISO standard xml data type.Bu nedenle, iyi biçimlendirilmiş xml sürüm 1.0 belgeleri ve aynı zamanda sözde içerik parçalarını metin düğümleri ve isteğe bağlı sayıda en üst düzey öğeleri ile untyped xml saklayabilirsiniz sütun.Sistem Veri biçimlendirilip biçimlendirilmediğini tanımlamak sütun xml şemaları bağlı olmasını gerektirmez ve genişletilmiş anlamda iyi biçimlendirilmiş veri reddeder olduğunu denetler.Ayrıca xml türlenmemiş değişkenler ve parametreleri, bu doğrudur.

xml şemaları

Bir xml şeması aşağıdakileri sağlar:

  • Doğrulama kısıtlamaları. Yazılı xml örnek atanan veya değiştirilen her sql Server örnek doğrular.

  • Veri bilgileri yazın. Şemalar, öznitelikleri ve öğe türleri hakkında bilgi sağlar xml veri türü örnek.Bulunan değerler için daha kesin çalışma semantik türü hakkında bilgi sağlar örnek ile untyped mümkün olandan xml.Örneğin, ondalık değer, ancak dize değeri ondalık Aritmetik işlemler gerçekleştirilebilir.Bu nedenle, yazılı xml depolama önemli ölçüde untyped xml daha kompakt hale getirilebilir.

Yazılı veya Untyped xml seçme

Türlenmemiş kullanımı xml veri türü aşağıdaki durumlarda:

  • xml, verileri bir şema gerekmez.

  • Şemaların vardır, ancak sunucunun veriyi doğrulamak istiyor musunuz.Bu bazen, durum ne zaman bir uygulama sunucudaki verileri depolamak önce istemci taraflı doğrulamayı gerçekleştirir veya geçici olarak şemaya göre geçersiz veya sunucuda desteklenmeyen şema bileşenleri kullanan xml verileri depolar.

Yazılı kullanım xml veri türü aşağıdaki durumlarda:

  • İstediğiniz xml Şemalarına göre xml verilerini doğrulamak için sunucu ve şemaların xml verileriniz için vardır.

  • Depolama ve sorgu en iyi duruma getirme türü bilgilere dayanarak yararlanmak istiyor.

  • Tür bilgileri sorgularınızı derleme sırasında daha iyi yararlanmak istiyor.

Yazılı xml sütunlar, parametreler ve değişken xml belgeleri veya içerik saklayabilirsiniz.Ancak, bir bayrakla bir belge saklamak veya at içerik olup olmadığını belirlemek zorunda saat mercilere.Ayrıca, sağlamak zorunda koleksiyon , xml şemaları.Her xml örnek tam olarak bir tane üst düzey öğesi varsa, belge belirtin.Aksi durumda, içerik kullanır.Sorgu derleyici belge bayrak türü denetimlerinde sorgu derleme sırasında gerçekleştirip tek üst düzey öğeleri kullanır.

Yazılı xml oluşturma

Yazılı oluşturabilmeniz için önce xml değişkenleri, parametre veya sütun, xml şeması öncelikle kaydolmalısınız koleksiyon kullanarak xml şema KOLEKSİYONU (Transact-sql) oluştur.Sonra ilişkilendirmek xml şema koleksiyon değişkenler, parametre veya sütun ile xml veri türü.

Aşağıdaki örneklerde, iki bölümlü adlandırma kuralı xml şema belirtmek için kullanılan koleksiyon adı.İlk bölümü şema adı ve ikinci bölümü xml şema koleksiyon adı.

Örnek: Şema koleksiyonu bir xml türü değişkeni ile ilişkilendirme

The following example creates anxml type variable and associates a schema collection with it.Şema koleksiyon içinde belirtilen örnek zaten alınır AdventureWorks2008R2 veritabanı.

DECLARE @x xml (Production.ProductDescriptionSchemaCollection) 

Örnek: Bir şema bir xml türü sütun için belirtme

Aşağıdaki örnek içeren bir tablo oluşturur bir xml yazın sütun ve sütun için bir şema belirtir:

CREATE TABLE T1(
 Col1 int, 
 Col2 xml (Production.ProductDescriptionSchemaCollection)) 

Örnek: Bir saklı yordam için bir xml türü parametre iletme

Aşağıdaki örnek geçen bir xml parametresi bir saklı yordam için yazın ve değişken için bir şema belirtir:

CREATE PROCEDURE SampleProc 
  @ProdDescription xml (Production.ProductDescriptionSchemaCollection) 
AS 

Aşağıdaki xml şema hakkında Not koleksiyon:

  • Bir xml şeması koleksiyon içinde kayıtlı kullanarak veritabanı kullanılabilir: bir xml şeması oluşturma koleksiyon.

  • Dan artığını, bir dize için bir yazılı xml veri türü ayrıştırma işlemi de yapar doğrulama ve yazarak, xml şema ad alanları Belirtilen derlemedeki temel.

  • Yazılı bir tonunu xml veri türü için bir untyped xml veri türü ve vice versa.

sql Server'da xml oluşturmak için diğer yolları hakkında daha fazla bilgi için bkz: xml örnekleri oluşturuluyor.xml oluşturulduktan sonra onu ya da atanabilir bir xml veri değişkeni yazın veya depolanmış xml türü sütunlar için ek işleme.

Veri türü hiyerarşisi içinde xml veri türü görünür aşağıda sql_variant ve kullanıcı tanımlı türler, ancak herhangi bir yerleşik türleri. yukarıda

Örnek: Yazılı xml sütun kısıtlamak için esaslarını belirten

Yazdığınız için xml sütunları, sütun yalnızca tek ve en üst düzey öğeleri içinde it. depolanan her örnek için izin verecek şekilde kısıtlayabilirsinizİsteğe bağlı belirterek bunu DOCUMENT bir tablo oluşturulduğunda aşağıdaki örnekte gösterildiği gibi model:

CREATE TABLE T(Col1 xml 
   (DOCUMENT Production.ProductDescriptionSchemaCollection))
GO
DROP TABLE T
GO

Varsayılan olarak, örnekleri depolanan yazılı xml sütun depolanan xml içerik olarak değil de xml belgeleri.Bu aşağıdakileri sağlar:

  • Sıfır veya daha çok üst düzey öğeleri

  • Üst düzey öğeleri metin düğümleri

Ekleyerek bu davranışı da açıkça belirtebilirsiniz CONTENT Aşağıdaki örnekte gösterildiği gibi model:

CREATE TABLE T(Col1 xml(CONTENT Production.ProductDescriptionSchemaCollection))
GO -- Default

İsteğe bağlı belge/içerik özellikleri, tanımladığınız her yere belirtebilirsiniz Not xml türü (yazılı xml).Örneğin, oluşturduğunuzda bir yazılı xml , değişken, belge/içerik model aşağıdaki gösterildiği gibi ekleyebilirsiniz:

declare @x xml (DOCUMENT Production.ProductDescriptionSchemaCollection)

Belge türü tanımı (dtd)

The xml data type columns, variables, and parameters can be typed by using XML schema, but not by using DTD.Ancak, satır içi dtd için kullanılabilir türlenmemiş hem xml varsayılan değerlerini sağlamak için ve değiştirmek için yazılan varlık başvurular genişletilmiş kendi formu ile.

DTD'ler, üçüncü taraf araçları kullanarak xml Şema belgelerine dönüştürmek ve xml şemaları veritabanına yükleyin.

Yazılı xml sql Server 2005, sql Server 2008 yükseltme

sql Server 2008 xml şeması desteği lax doğrulama desteği de dahil olmak üzere, çeşitli uzantıları yapılan, işlenmesi geliştirilmiş xs:tarih, xs: saat ve xs:tarihzaman örnek veri ve listeyi ve bileþim türlerini desteği eklendi.Çoğu durumda değişiklikler yükseltme deneyimini etkilemez.Ancak, bir xml şema koleksiyonu sql Server 2005'te, izin verilen değerler türü kullanırsanız, xs:tarih, xs: saat, veya xs:tarihzaman (veya herhangi bir alt türü) sql Server 2008 için sql Server 2005 veritabanı iliştirdiğinizde, aşağıdaki yükseltme adımları ortaya sonra:

  1. Her xml sütun için yazılı olarak yazılan öznitelikleri veya öğeleri içeren bir xml şema koleksiyonu ile xs:anyType, xs:anySimpleType, xs:tarih veya onun alt türlerinden birini xs: saat veya alt herhangi tür tamamını veya xs:tarihzaman veya onun alt türlerinden birini, veya Birliği olan veya bu türlerinden herhangi birini içeren liste türleri aşağıdakilerden oluşur:

    1. Tüm xml dizinler üzerinde sütun devre dışı bırakılacak.

    2. Bunlar z timezone normalleştirilmiş nedeniyle tüm sql Server 2005 değerleri z saat dilimi, gösterilemeyecek kadar devam eder.

    3. Tüm xs:tarih veya xs:tarihzaman dizini yeniden oluşturma veya XQuery veya xml dml deyimlerini aldığında 1 yıl, 1 Ocak'ta bir çalışma zamanı hatası neden olur daha küçük değerler, bu değeri içeren xml veri türü karşı yürütülen.

  2. Yıl içinde negatif herhangi xs:tarih veya xs:tarihzaman özellikleri veya varsayılan değerleri bir xml şema koleksiyonu içinde otomatik olarak olacak kadartarihBankası tarafından izin verilen en küçük değer d xs:tarih veya xs:tarihzaman türü (örn., 0001-01-01T00:00:00.0000000Z için xs:tarihzaman).

Negatif yıllık içerse bile, basit bir sql deyim tam xml veri türü almak için kullanmaya devam edebilirsiniz olduğunu unutmayın.Bir yıl içinde yeni desteklenen negatif yıllar yerine önerilen aralık için öznitelik veya öğe türünü değiştirmek xs:dize.