Udostępnij za pośrednictwem


Modyfikowanie indeksów XML

The Zmiana INDEKSU (Transact-SQL) Transact-SQL DDL statement can be used to modify existing XML and non-XML indexes.Jednak nie wszystkie opcje zmiany INDEKSU dostępnych indeksów XML.Następujące opcje nie są prawidłowe, modyfikując indeksy XML:

  • Odbuduj i zestaw opcji IGNORE_DUP_KEY jest nieprawidłowy dla indeksów XML.Opcja Odbuduj ONLINE musi być zestaw do OFF dla indeksów pomocniczych XML.Opcja DROP_EXISTING nie jest dozwolona w instrukcja ALTER INDEKSU.

  • Modyfikacje z klucz podstawowy ograniczenie w tabela użytkownika nie są automatycznie przenoszone na indeksy XML.Użytkownik musi najpierw usunąć indeksy XML i utworzyć je ponownie.

  • Jeśli określono zmianę INDEKSU wszystkich stosuje się do innych niż XML i indeksy XML.Opcje indeksowania mogą być określone nie są prawidłowe dla obu typów indeksów.W takim przypadek cały instrukcja nie powiedzie się.

Przykład: Modyfikowanie indeksu XML

W poniższym przykładzie jest tworzony indeks XML i następnie modyfikowane przez ustawienie opcji ALLOW_ROW_LOCKS do OFF.Gdy ALLOW_ROW_LOCKS jest OFF, wiersze nie są zablokowane i dostęp do określonych indeksów jest uzyskiwany przy użyciu strona- i tabela-poziom blokad.

CREATE TABLE T (Col1 INT PRIMARY KEY, XmlCol XML)
GO
-- Create primary XML index. 
CREATE PRIMARY XML INDEX PIdx_T_XmlCol 
ON T(XmlCol)
GO
-- Note the type 3 is index on XML type.
SELECT *
FROM sys.xml_indexes
WHERE object_id = object_id('T')
AND name='PIdx_T_XmlCol'

-- Modify and set an index option.
ALTER INDEX PIdx_T_XmlCol on T 
SET (ALLOW_ROW_LOCKS = OFF)

Przykład: Wyłączanie i Włączanie indeksu XML

Indeks XML jest domyślnie włączona.Indeks XML jest wyłączona, kwerendy, na którym działa kolumna XML nie należy używać indeksu XML.Aby włączyć indeks XML, użyj ALTER INDEX z REBUILD opcji.

CREATE TABLE T (Col1 INT PRIMARY KEY, XmlCol XML)
GO
CREATE PRIMARY XML INDEX PIdx_T_XmlCol ON T(XmlCol)
GO
ALTER INDEX PIdx_T_XmlCol on T DISABLE
Go
-- Verify index is disabled.
SELECT *
FROM sys.xml_indexes
WHERE object_id = object_id('T')
AND name='PIdx_T_XmlCol'
-- Rebuild the index.
ALTER INDEX PIdx_T_XmlCol on T REBUILD
Go

Zobacz także

Koncepcje