Udostępnij przez


Modifying XML Indexes

The ALTER INDEX (języka Transact-SQL)Transact-SQL DDL statement can be used to modify existing XML and non-XML indexes.Jednak nie wszystkie opcje ALTER indeks dostępnych indeksów XML.Poniższe opcje są nieprawidłowe podczas modyfikowania indeksów XML:

  • Rekonstrukcji i zestaw opcja IGNORE_DUP_KEY nie jest prawidłowa dla indeksów XML.Opcja odbudowywania ONLINE należy ustawić na OFF dla indeksów pomocniczych XML.Opcja DROP_EXISTING nie jest dozwolona w instrukcja ALTER INDEX.

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

  • Jeżeli określono wartość ALTER ALL indeks, stosuje się do XML inny niż i indeksów XML.Indeksowanie opcji można określić, które nie są prawidłowe dla obu typów indeksów.W takim przypadek cały instrukcja nie powiedzie się.

Przykład: Modyfikowanie indeks XML

W poniższym przykładzie jest tworzony indeks XML i następnie zmodyfikowany przez ustawienie opcji ALLOW_ROW_LOCKS Aby OFF. Kiedy ALLOW_ROW_LOCKS jest OFF, nie są zablokowane wiersze i uzyskuje się dostęp do określonych indeksów za pomocą strona- i poziom tabela 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 indeks XML

Indeks XML jest domyślnie włączona.Jeśli indeks XML jest wyłączona, kwerendy, uruchamianie wobec kolumna XML nie należy używać indeksu XML.Aby włączyć indeks XML, należy użyć ALTER INDEX z REBUILD Opcja.

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