sp_indexoption (języka Transact-SQL)
Ustawia blokowania wartości opcji dla tabel z nie indeks klastrowanylub indeksy klastrowane i nieklastrowany zdefiniowane przez użytkownika.
Aparat baz danych programu SQL Server Automatycznie powoduje, że opcje strona, wiersz lub tabela-poziom blokowania.Nie trzeba zestaw te opcje ręcznie.sp_indexoption przewidziane w odpowiednie użytkownicy zaawansowani, którzy wiedzą z pewnością, że określonego typu blokada jest zawsze.
Ważne: |
---|
Ta funkcja zostanie usunięta z następnej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.Zamiast tego należy użyć Zmiana INDEKSU (Transact-SQL). |
Składnia
sp_indexoption [ @IndexNamePattern = ] 'table_or_index_name'
, [ @OptionName = ] 'option_name'
, [ @OptionValue = ] 'value'
Argumenty
[ @ IndexNamePattern=] 'table_or_index_name"
To nazwa kwalifikowana lub nonqualified przez użytkownika tabela lub indeksu.table_or_index_namejest nvarchar(1035), z braku domyślne.Cudzysłowy są wymagane tylko wtedy, gdy określono kwalifikowana nazwa indeksu lub tabela .Jeśli podano nazwę tabela w pełni kwalifikowana nazwa bazy danych, w tym nazwa bazy danych musi być nazwą bieżącej bazy danych.Gdy indeks nie jest określona nazwa tabela , wartość określona opcja jest zestaw dla wszystkich indeksów w tabela oraz samej tabela , jeśli nie indeks klastrowany istnieje.[ @ OptionName = ] 'option_name"
Jest nazwą opcja Indeks.option_namejest varchar(35), z braku domyślne.option_namemoże mieć jedną z następujących wartości.Wartość
Opis
AllowRowLocks
Gdy ma wartość TRUE, blokad wiersza są dozwolone podczas uzyskiwania dostępu do indeksu.Aparat baz danych Określa, kiedy są używane wiersza blokad.Gdy ma wartość FALSE, wiersz blokady nie są używane.Wartością domyślną jest TRUE.
AllowPageLocks
Gdy ma wartość TRUE, blokad strona są dozwolone podczas uzyskiwania dostępu do indeksu.Aparat baz danych Określa, kiedy są używane strona blokad.Gdy ma wartość FALSE, strona blokady nie są używane.Wartością domyślną jest TRUE.
DisAllowRowLocks
Gdy ma wartość TRUE, wiersz blokady nie są używane.Gdy ma wartość FALSE, blokad wiersza są dozwolone podczas uzyskiwania dostępu do indeksu.Aparat baz danych Określa, kiedy są używane wiersza blokad.
DisAllowPageLocks
Gdy ma wartość TRUE, strona blokady nie są używane.Gdy ma wartość FALSE, blokad strona są dozwolone podczas uzyskiwania dostępu do indeksu.Aparat baz danych Określa, kiedy są używane strona blokad.
[ @ OptionValue = ] 'value"
Określa, czy option_name ustawienie jest włączone (TRUE na wartość tak, lub 1) lub wyłączony (FALSE, wyłączenie nr, lub 0).valuejest varchar(12), z braku domyślne.
Wartości kodów powrotnych
0 (sukces) lub większa od 0 (Brak)
Uwagi
Indeksy XML nie są obsługiwane.Jeśli określony indeks XML lub nazwa tabela jest określany za pomocą żadna nazwa indeksu i tabela zawiera indeks XML, instrukcja nie powiedzie się.Aby zestaw te opcje, należy użyć Zmianę INDEKSU zamiast.
Aby wyświetlić bieżący wiersz i blokady właściwości strona , użyj INDEXPROPERTY lub sys.indexes katalogu widoku.
- Wiersz, strona-, i tabela-poziom blokady są dozwolone podczas uzyskiwania dostępu do indeksu po AllowRowLocks = TRUE lub DisAllowRowLocks = FALSE, i AllowPageLocks = TRUE lub DisAllowPageLocks = FALSE.Aparat baz danych Wybiera odpowiedni blokada i może eskalować blokada z rzędu lub stronablokada tabelablokada. Aby uzyskać więcej informacji, zobacz Eskalację blokady (aparat bazy danych).
Tylko tabela-poziom blokada jest dozwolone podczas uzyskiwania dostępu do indeksu po AllowRowLocks = FAŁSZ lub DisAllowRowLocks = TRUE i AllowPageLocks = FAŁSZ lub DisAllowPageLocks = TRUE.
Jeśli z indeksem nie określono nazwy tabela , ustawienia są stosowane do wszystkich indeksów w tabela.Podczas podstawowej tabela ma indeks klastrowany (to znaczy jest sterty) ustawienia są stosowane w następujący sposób:
Gdy AllowRowLocks lub DisAllowRowLocks jest zestaw wartość TRUE lub FALSE, to ustawienie jest stosowane do sterty i dowolne skojarzone zbudowania indeksów nie klastrowanych.
Gdy AllowPageLocks opcja jest zestaw na wartość TRUE lub DisAllowPageLocks jest zestaw na wartość FALSE, to ustawienie jest stosowane do sterty i dowolne skojarzone zbudowania indeksów nie klastrowanych.
Gdy AllowPageLocks opcja jest zestaw wartość FALSE lub DisAllowPageLocks jest zestaw na wartość TRUE, to ustawienie jest w pełni stosowane do zbudowania indeksów.Oznacza to, że wszystkie blokady strona są niedozwolone w zbudowania indeksów.Na stercie tylko udostępnione (S), update (U) i blokad wyłączności (X) dla strona są niedozwolone.Aparat baz danych Można nadal uzyskać konwersji stronablokada (IS, IU lub IX) dla wewnętrznych celów.
Aby uzyskać więcej informacji o konfigurowaniu blokowania ziarnistość w indeksie, zobacz Dostosowywanie blokowania indeksu.
Uprawnienia
Wymaga ZMIEŃ uprawnienia w tabela.
Przykłady
A.Ustawienie opcji dla określonego indeksu
Poniższy przykład blokad strona nie zezwala na IX_Customer_TerritoryID indeksu na Customer tabela.
USE AdventureWorks2008R2;
GO
EXEC sp_indexoption N'Sales.Customer.IX_Customer_TerritoryID',
N'disallowpagelocks', TRUE;
B.Ustawiając opcję wszystkie indeksy tabela
Poniższy przykład uniemożliwia blokad wiersza na wszystkie indeksy skojarzone z Product tabela.sys.indexes Pytani wykazu widoku, przed i po wykonaniu sp_indexoption procedurę, aby wyświetlić wyniki instrukcja.
USE AdventureWorks2008R2;
GO
--Display the current row and page lock options for all indexes on the table.
SELECT name, type_desc, allow_row_locks, allow_page_locks
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'Production.Product');
GO
-- Set the disallowrowlocks option on the Product table.
EXEC sp_indexoption N'Production.Product',
N'disallowrowlocks', TRUE;
GO
--Verify the row and page lock options for all indexes on the table.
SELECT name, type_desc, allow_row_locks, allow_page_locks
FROM sys.indexes
WHERE object_id = OBJECT_ID(N'Production.Product');
GO
C.Ustawienie opcji dla tabela z nie indeks klastrowany
Poniższy przykład nie zezwala na strona blokady tabela z nie indeks klastrowany (sterty).sys.indexes Pytani wykazu widoku, przed i po sp_indexoption wykonaniu procedury, aby wyświetlić wyniki instrukcja.
USE AdventureWorks2008R2;
GO
--Display the current row and page lock options of the table.
SELECT OBJECT_NAME (object_id) AS [Table], type_desc, allow_row_locks, allow_page_locks
FROM sys.indexes
WHERE OBJECT_NAME (object_id) = N'DatabaseLog';
GO
-- Set the disallowpagelocks option on the table.
EXEC sp_indexoption DatabaseLog,
N'disallowpagelocks', TRUE;
GO
--Verify the row and page lock settings of the table.
SELECT OBJECT_NAME (object_id) AS [Table], allow_row_locks, allow_page_locks
FROM sys.indexes
WHERE OBJECT_NAME (object_id) = N'DatabaseLog';
GO