sp_indexoption (języka Transact-SQL)

Ustawia blokowania wartości opcji dla indeksów klastrowanych i nieklastrowany zdefiniowanej przez użytkownika lub tabel z nie indeks klastrowany.

The SQL Server Database Engine automatically makes choices of strona-, row-, or tabela-poziom locking. You do not have to set these options manually.sp_indexoption is provided for expert users who know with certainty that a particular type of lock is always appropriate.

Important noteImportant Note:

This feature will be removed in the next version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Zamiast tego należy użyć ALTER INDEX (języka Transact-SQL).

Topic link iconKonwencje składni języka Transact-SQL

sp_indexoption [ @IndexNamePattern = ] 'table_or_index_name' 
        , [ @OptionName = ] 'option_name' 
        , [ @OptionValue = ] 'value'

Argumenty

  • [ @IndexNamePattern=] 'table_or_index_name'
    Is the qualified or nonqualified name of a user-defined table or index.table_or_index_name is nvarchar(1035), with no default.Znaki cudzysłowu są wymagane tylko wtedy, gdy jest określona kwalifikowaną nazwy indeksu lub spisu.Nazwę tabela w pełni kwalifikowana znajduje się w tym nazwę bazy danych, nazwa bazy danych musi być nazwą bieżącej bazy danych.W przypadku, gdy indeks nie jest określona nazwa tabela, wartość określona opcja jest zestaw dla wszystkich indeksów w tabela oraz samej jeśli istnieje indeks klastrowany nie tabela.

  • [ @OptionName =] 'option_name'
    Is an index option name.option_name is varchar(35), with no default.option_name can have one of the following values.

    Wartość

    Description

    AllowRowLocks

    Gdy wartość właściwości równa TRUE oznacza, blokad wiersza są dozwolone podczas uzyskiwania dostępu do indeksu.The Database Engine determines when row locks are used.Gdy ma wartość FAŁSZ, wiersz blokady nie są używane.Wartością domyślną jest TRUE.

    AllowPageLocks

    Gdy wartość właściwości równa TRUE oznacza, blokad strona są dozwolone podczas uzyskiwania dostępu do indeksu.The Database Engine determines when strona locks are used. Gdy ma wartość FAŁSZ, blokad strona nie są używane.Wartością domyślną jest TRUE.

    DisAllowRowLocks

    Gdy wartość właściwości równa TRUE oznacza, wiersz blokady nie są używane.Ma wartość FAŁSZ, blokad wiersza jest dozwolone podczas uzyskiwania dostępu do indeksu.The Database Engine determines when row locks are used.

    DisAllowPageLocks

    Gdy wartość właściwości równa TRUE oznacza, blokad strona nie są używane.Gdy ma wartość FAŁSZ, blokad strona są dozwolone podczas uzyskiwania dostępu do indeksu.The Database Engine determines when strona locks are used.

  • [ @OptionValue =] 'value'
    Specifies whether the option_name setting is enabled (TRUE, ON, yes, or 1) or disabled (FALSE, OFF, no, or 0).value is varchar(12), with no default.

Wartości kodów powrotnych

0 (sukces) lub większa od 0 (brak)

Remarks

Indeksy XML nie są obsługiwane.Jeśli indeks XML jest określona, lub nazwa tabela jest określona bez nazwy indeksu i tabela zawiera indeks XML, deklaracja nie powiedzie się.Aby ustawić te opcje, należy użyć ZMIANA INDEKSU zamiast niego.

Aby wyświetlić bieżący wiersz i blokowanie właściwości strona, należy użyć INDEXPROPERTY or the sys.Indexes Służy do wyświetlania katalogu.

  • Wiersz — strona- i blokowania poziom tabela są dozwolone podczas uzyskiwania dostępu do indeksu, gdy AllowRowLocks = TRUE or DisAllowRowLocks = FALSE, and AllowPageLocks = TRUE or DisAllowPageLocks = FALSE.The Database Engine chooses the appropriate blokada and can escalate the blokada from a row or strona blokada to a tabela blokada. Aby uzyskać więcej informacji zobaczeskalacja blokad (aparat bazy danych).

Blokada poziomie tabela jest dozwolone podczas uzyskiwania dostępu do indeksu, gdy AllowRowLocks = FALSE or DisAllowRowLocks = TRUE and AllowPageLocks = FALSE or DisAllowPageLocks = TRUE.

W przypadku, gdy indeks nie jest określona nazwa tabela, ustawienia są stosowane do wszystkich indeksów dla tej tabela.Po tabela źródłowej ma indeks klastrowany (to znaczy jest sterty) ustawienia są stosowane w następujący sposób:

  • Kiedy AllowRowLocks or DisAllowRowLocks są zestaw na wartość TRUE lub FALSE zestaw ting jest stosowany do sterty i dowolne skojarzone ponownego zbudowania indeksów nie klastrowanych.

  • Kiedy AllowPageLocks opcja jest zestaw wartość TRUE lub DisAllowPageLocks jest zestaw na wartość FALSE, zestaw ting jest stosowany do sterty i dowolne skojarzone ponownego zbudowania indeksów nie klastrowanych.

  • Kiedy AllowPageLocks opcja jest ustawiona wartość FAŁSZ lub DisAllowPageLocks jest ustawiona na wartość TRUE, to ustawienie jest całkowicie rozliczony ponownego zbudowania indeksów nie klastrowanych.Oznacza to wszystkie blokady strona są niedozwolone w ponownego zbudowania indeksów nie klastrowanych.Na stosie tylko udostępnione (S), aktualizacja (U) i blokad wyłączności (X) strona są niedozwolone.The Database Engine can still acquire an intent strona blokada (IS, IU or IX) for internal purposes.

Aby uzyskać więcej informacji na temat konfigurowania ziarnistość blokowania na indeks zobacz Customizing Locking for an Index.

Uprawnienia

Wymaga ALTER uprawnienia w tabela.

Przykłady

A.Ustawiając opcję określonego indeksu

W poniższym przykładzie strona blokad nie zezwala na IX_Customer_TerritoryID Indeks na Customer Tabela.

B.Ustawiając opcję wszystkie indeksy dla tabela

W poniższym przykładzie nie zezwala na blokad wiersza dla wszystkich indeksów skojarzonych z Product Tabela. The sys.indexes catalog view is queried before and after executing the sp_indexoption procedure to show the wyniki of the instrukcja.

C.Ustawianie opcji dla tabela zawierającej nie indeks klastrowany

W poniższym przykładzie nie zezwala strona blokad dla tabela zawierającej nie indeks klastrowany (sterty).The sys.indexes catalog view is queried before and after the sp_indexoption procedure is executed to show the wyniki of the instrukcja.