Dostosowywanie czas-Out blokada

When an instance of the Microsoft SQL Server Database Engine cannot grant a lock to a transaction because another transaction already owns a conflicting lock on the resource, the first transaction becomes blocked waiting for the existing lock to be released.Domyślnie jest nie obowiązkowych limitu czasu i sposobem sprawdzenia, czy zasób jest zablokowany przed zablokowaniem, z wyjątkiem przypadków, aby podjąć próbę dostępu do danych (i potencjalnie uzyskać zablokowane przez czas nieograniczony).

Uwaga

W SQL Server, należy użyć sys.dm_os_waiting_tasks dynamicznego zarządzania widok, aby ustalić, czy proces jest blokowany i którzy blokuje go.We wcześniejszych wersjach SQL Server, należy użyć sp_who systemu procedura przechowywana.

Ustawienie LOCK_TIMEOUT umożliwia aplikacji ustawić maksymalny czas instrukcja czeka na zablokowanych zasób.Po instrukcja jest dłuższy niż ustawienie LOCK_TIMEOUT 15–30, zablokowanych instrukcja jest automatycznie, anulowane i (1222 komunikat o błędzieLock request time-out period exceeded) są zwracane do aplikacji. Zawierającego transakcję instrukcja, jednak nie jest przywracana lub anulowany przez SQL Server. W związku z tym aplikacja musi mieć programu obsługi błędów, które może nadlewki i podlewki 1222 komunikat o błędzie.Jeśli aplikacja nie są stosowane nadlewki ani podlewki błędu, aplikacja może być kontynuowana unaware poszczególnych instrukcja SQL w obrębie transakcji zostało anulowane i błędy mogą występować, ponieważ instrukcja w dalszej części transakcji może być zależna od instrukcja, które nigdy nie było wykonywane.

Wykonania programu obsługi błędów, które pułapki komunikat o błędzie 1222 pozwala aplikacjom sytuacji limitu czas i podejmować akcja naprawcze, takie jak: automatycznie resubmitting instrukcję, która została zablokowana lub wycofywanie całej transakcji.

Aby określić bieżące ustawienie LOCK_TIMEOUT, wykonać funkcja @@ LOCK_TIMEOUT:

SELECT @@lock_timeout;
GO