Udostępnij za pośrednictwem


Dostosowywanie limit czasu blokady

When an instance of the Microsoft Aparat baz danych programu SQL Server 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 obowiązkowe, nie czas-okres 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 nieskończoność).

Ostrzeżenie

W SQL Server, użyj sys.dm_os_waiting_tasks dynamiczny widok zarządzania do określenia, czy proces jest blokowany i który blokuje.W starszych wersjach SQL Server, użyj sp_who systemowa procedura składowana.

zestaw LOCK_TIMEOUT umożliwia aplikacji ustawić maksymalnie czas, który instrukcja czeka na zablokowanych zasobów.Gdy oświadczenie oczekiwał dłużej niż ustawienie LOCK_TIMEOUT, zablokowanych instrukcja został anulowany automatycznie, a komunikat o błędzie 1222 (Lock request time-out period exceeded) jest zwracane do aplikacji.Zawierające transakcji instrukcja, jednak nie jest przywracana lub anulowany przez SQL Server.Aplikacja musi więc obsługi błędu, który można przechwytywać komunikat o błędzie 1222.Jeśli aplikacja nie wyłapać błąd, aplikacja przejść unaware że poszczególnych instrukcja w obrębie transakcji zostało anulowane i mogą wystąpić błędy, ponieważ sprawozdania później w transakcji może zależeć od nigdy wykonanej instrukcja.

Implementowanie obsługi błędów, które pułapki komunikat o błędzie 1222 umożliwia aplikacji do obsługi czas-out sytuacji i podjęcia działań naprawczych, takie jak: automatyczne ponowne przesyłanie instrukcja , zostało zablokowane lub wycofywanie całej transakcji.

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

SELECT @@lock_timeout;
GO