Aracılığıyla paylaş


xml dizinler oluşturma

Bu konuda birincil ve ikincil xml dizinler oluşturma açıklanmaktadır.

Birincil xml dizin oluşturma

To create a primary XML index, use the CREATE INDEX (Transact-SQL) Transact-SQL DDL statement.-xml dizinleri için kullanılabilir tüm seçenekleri, xml dizinler üzerinde desteklenir.

xml dizin oluştururken aşağıdakilere dikkat edin:

  • Oluşturmak için birincil xml dizini, tablo dizini, temel tablo adı verilen xml sütun içeriyorsa, kümelenmiş dizin birincil anahtar olmalıdır.Bu temel tablo bölümlere ayrılmışsa, birincil xml dizin aynı bölümleme şemasını kullanarak ve bölümleme bölümlenebilir olduğunu emin olur işlev.

  • Bir xml dizini kümelenmiş, birincil anahtar olup olmadığını tablo değiştirilemez.Birincil anahtar değiştirmeden önce tüm xml dizinler tablo bırak gerekir.

  • Tek bir birincil xml dizin oluşturulabilir xml türü sütun.xml türü sütun herhangi bir türü dizin anahtar sütunu olarak oluşturamazsınız.Ancak, dahil xml l tipi sütun -xml dizin.Her xml Türü sütununda bir tablo , kendi birincil xml dizini. olabilirAncak, yalnızca bir birincil xml dizin başına xml türü sütun verilir.

  • xml dizinler xml olmayan dizinler aynı ad bulunuyor.Bu nedenle, bir xml dizin ve xml dizini aynı olamaz tablo aynı ada sahip.

  • IGNORE_DUP_KEY ve çevrimiçi seçenekleri her zaman xml dizinler için off için küme.Bu seçenekler, kapalı bir değerle belirtebilirsiniz.

  • Filegroup veya bölümlenme bilgisi kullanıcının tablo xml dizin uygulanır.Kullanıcılar bu ayrı ayrı bir xml dizin belirtilemez.

  • DROP_EXISTING dizin seçeneği birincil xml dizin bırakın ve yeni bir birincil xml dizin, oluşturabilir veya ikincil bir xml dizin bırakın ve yeni bir ikincil xml dizin oluşturun.Ancak, bu seçenek bir yeni birincil xml dizin veya vice versa oluşturmak için ikincil bir xml dizin bırakamazsınız.

  • Birincil xml dizin adlarının görünüm adları olarak aynı kısıtlamaları vardır.

Üzerinde bir xml dizin oluşturamazsınız bir xml yazın görünümünde sütun bir Tablo değerli değişkeni ile xml , sütunları yazın veya xml türü değişkenleri.

  • Değiştirmek için bir xml yazılı xml türü sütun için untyped ya da tam tersi tablo alter column alter seçeneğini kullanarak, xml dizin sütun üzerinde olması gerekir.Biri yoksa, sütun türü değişikliği denenmeden önce onu kesilmesini gerekir.

  • Bir xml dizin oluşturulduğunda, seçenek ARITHABORT on olarak küme olması gerekir.Sorgulamak, Ekle, Sil veya xml değerleri güncelleştirmek için sütun xml veri türü yöntemlerini kullanarak, aynı seçeneği bağlantı üzerinde küme olması gerekir.Değilse, xml veri türü yöntemleri başarısız olur.

    Not

    xml dizinler hakkında bilgi katalog görünümleri bulunabilir.Ancak, sp_helpindex desteklenmiyor.Bu konuda verilen örnekler xml dizin bilgilerini bulmak için katalog görünümleri sorgu nasıl açıklar.

When creating or recreating a primary XML index on an XML data type column that contains values of the XML Schema types xs:date or xs:dateTime (or any subtypes of these types) that have a year of less than 1, the index creation will fail in SQL Server 2008.SQL Server 2005 allowed these values, so this problem can occur when creating indexes in a database generated in SQL Server 2005.Daha fazla bilgi için bkz: Yazılı xml Untyped xml karşılaştırılması.

Örnek: Birincil xml dizin oluşturma

Türlenmemiş bir xml sütun içeren tabloyu t (pk INT birincil anahtar xCol xml) örneklerin çoğunda kullanılır.Bunlar yazılı xml için basit bir şekilde genişletilebilir.xml kullanma hakkında daha fazla bilgi yazılı için bkz: SQL Server'da xml uygulama.) Kolaylık olması açısından, aşağıdaki gösterildiği gibi xml veri örnekleri için sorgular açıklanmıştır:

<book genre="security" publicationdate="2002" ISBN="0-7356-1588-2">
   <title>Writing Secure Code</title>
   <author>
      <first-name>Michael</first-name>
      <last-name>Howard</last-name>
   </author>
   <author>
      <first-name>David</first-name>
      <last-name>LeBlanc</last-name>
   </author>
   <price>39.99</price>
</book>

Aşağıdaki deyim üzerinde tablo t: xml sütun xCol, idx_xCol adlı bir xml dizin oluşturur

CREATE PRIMARY XML INDEX idx_xCol on T (xCol)

İkincil bir xml dizin oluşturma

Use the CREATE INDEX (Transact-SQL) Transact-SQL DDL statement to create secondary XML indexes and specify the type of the secondary XML index that you want.

İkincil xml dizinler oluştururken aşağıdakilere dikkat edin:

  • IGNORE_DUP_KEY ve çevrimiçi, dışında kümelenmemiş dizin için geçerli dizin oluşturma seçenekleri tüm ikincil xml dizinler üzerinde izin verilir.Bu iki seçenek her zaman kapalı ikincil xml dizinler için küme olması gerekir.

  • Yalnızca birincil xml dizin gibi ikincil dizin bölümlendirilir.

  • DROP_EXISTING, ikincil dizin kullanıcı tablo üzerinde bırakın ve kullanıcı tabloda başka bir ikincil dizin oluşturmak.

Sorgulama yapabilirsiniz sys.xml_indexes katalog görünüm xml dizin bilgilerini almak için.Dikkat secondary_type_desc sütun , sys.xml_indexes Katalog görünümü ikincil dizin türü sağlar:

SELECT  * 
FROM    sys.xml_indexes

Döndürülen değerleri secondary_type_desc sütun null, yol, değeri veya özelliği olabilir.Birincil xml dizin için döndürülen değer null olur.

Örnek: İkincil xml dizinler oluşturma

Aşağıdaki örnekte gösterilmektedir nasıl ikincil xml dizinler oluşturulur.Bu örnek ayrıca oluşturduğunuz xml dizinler hakkında bilgi gösterir.

CREATE TABLE T (Col1 INT PRIMARY KEY, XmlCol XML)
GO
-- Create primary index.
CREATE PRIMARY XML INDEX PIdx_T_XmlCol 
ON T(XmlCol)
GO
-- Create secondary indexes (PATH, VALUE, PROPERTY).
CREATE XML INDEX PIdx_T_XmlCol_PATH ON T(XmlCol)
USING XML INDEX PIdx_T_XmlCol
FOR PATH
GO
CREATE XML INDEX PIdx_T_XmlCol_VALUE ON T(XmlCol)
USING XML INDEX PIdx_T_XmlCol
FOR VALUE
GO
CREATE XML INDEX PIdx_T_XmlCol_PROPERTY ON T(XmlCol)
USING XML INDEX PIdx_T_XmlCol
FOR PROPERTY
GO

Sorgulama yapabilirsiniz sys.xml_indexes almak xml dizinler bilgi.The secondary_type_desc column provides the secondary index type.

SELECT  * 
FROM    sys.xml_indexes

Dizin bilgileri için Katalog görünümü de sorgulayabilirsiniz.

SELECT *
FROM sys.xml_indexes
WHERE object_id = object_id('T')

Örnek verileri ekleyebilir ve xml dizin bilgilerini gözden geçirin.

INSERT INTO T VALUES (1,
'<doc id="123">
<sections>
<section num="2">
<heading>Background</heading>
</section>
<section num="3">
<heading>Sort</heading>
</section>
<section num="4">
<heading>Search</heading>
</section>
</sections>
</doc>')
GO
-- Check XML index information.
SELECT *
FROM   sys.dm_db_index_physical_stats (db_id(), object_id('T'), NULL, NULL, 'DETAILED')
GO
-- Space usage of primary XML index
DECLARE @index_id int
SELECT  @index_id = i.index_id
FROM    sys.xml_indexes i 
WHERE   i.name = 'PIdx_T_XmlCol' and object_name(i.object_id) = 'T'
 
SELECT *
FROM sys.dm_db_index_physical_stats (db_id(), object_id('T') , @index_id, DEFAULT, 'DETAILED')
go
--- Space usage of secondary XML index (for example PATH secondary index)  PIdx_T_XmlCol_PATH
DECLARE @index_id int
SELECT  @index_id = i.index_id 
FROM    sys.xml_indexes i 
WHERE  i.name = 'PIdx_T_XmlCol_PATH' and object_name(i.object_id) = 'T'
 
SELECT *
FROM sys.dm_db_index_physical_stats (db_id(), object_id('T') , @index_id, DEFAULT, 'DETAILED')
go
 
-- Space usage of all secondary XML indexes for a particular table
SELECT i.name, object_name(i.object_id), stats.* 
FROM   sys.dm_db_index_physical_stats (db_id(), object_id('T'), NULL, DEFAULT, 'DETAILED') stats
JOIN sys.xml_indexes i ON (stats.object_id = i.object_id and stats.index_id = i.index_id)
WHERE secondary_type is not null
-- Drop secondary indexes.
DROP INDEX PIdx_T_XmlCol_PATH ON T
GO
DROP INDEX PIdx_T_XmlCol_VALUE ON T
GO
DROP INDEX PIdx_T_XmlCol_PROPERTY ON T
GO
-- Drop primary index.
DROP INDEX PIdx_T_XmlCol ON T
-- Drop table T.
DROP TABLE T
Go

Ayrıca bkz.

Kavramlar