Wskazówki blokowania

Blokowanie wskazówki mogą być określone dla pojedynczej tabela odwołań w SELECT, INSERT, UPDATE i Usuń sprawozdania.Wskazówki określić typ wiersza lub blokowanie versioning wystąpienie Aparat baz danych programu SQL Server używa dla danych tabela.Wskazówki blokowania poziom tabeli mogą być używane podczas dokładniejszą kontrolę typów blokad obiektu jest wymagany.Te wskazówki blokowania zastąpić bieżący poziom izolacji transakcji dla sesja.

Aby uzyskać więcej informacji o szczególne wskazówki blokowania i ich zachowania, zobacz Wskazówki tabel (Transact-SQL).

Ostrzeżenie

Aparat baz danych optymalizator kwerendy w prawie zawsze wybiera prawidłowy poziom blokowania.Zaleca się, aby użyć wskazówki blokowania poziom tabela do zmiany domyślne zachowanie blokowania tylko wtedy, gdy jest to konieczne.Brak zezwolenia na poziom blokowania może niekorzystnie wpłynąć na współbieżność.

Aparat baz danych Może być uzyskanie blokady podczas odczytywania metadane, nawet w przypadku, gdy przetwarzanie wybierz z blokowaniem wskazówkę uniemożliwia żądania blokady udziału podczas odczytywania danych.Na przykład wybierz korzystanie, wskazówka NOLOCK nie nabywa udział blokad podczas odczytywania danych, ale może niekiedy także żądania blokady podczas czytania widok wykazu systemu.Oznacza to, że jest możliwe przy użyciu NOLOCK zablokowana instrukcja SELECT.

Jak pokazano w poniższym przykładzie, jeśli poziom izolacji transakcji jest zestaw do SERIALIZABLEi na poziomie tabela Wskazówka blokady NOLOCK z SELECT instrukcja, zazwyczaj używane do obsługi transakcji serializować blokad zakres klucz nie zostaną podjęte.

USE AdventureWorks2008R2;
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
GO
BEGIN TRANSACTION;
GO
SELECT Title
    FROM HumanResources.Employee WITH (NOLOCK);
GO

-- Get information about the locks held by 
-- the transaction.
SELECT  
        resource_type, 
        resource_subtype, 
        request_mode
    FROM sys.dm_tran_locks
    WHERE request_session_id = @@spid;

-- End the transaction.
ROLLBACK;
GO

Jedynym blokada podjąć tego odwołania HumanResources.Employee jest stabilność schematu (Sch-S) blokada.W takim przypadek uszeregowieniem nie jest gwarantowane.

W SQL Server 2008, opcja LOCK_ESCALATION ALTER tabela można disfavor blokady tabela i włączyć blokad HoBT na tabele podzielonym na partycje.Ta opcja nie jest Wskazówka blokada, ale można jednak używane w celu zmniejszenia eskalacja blokad.Aby uzyskać więcej informacji, zobacz ALTER TABLE (Transact-SQL).