Udostępnij za pośrednictwem


MSSQLSERVER_1205

Szczegóły

Nazwa produktu

SQL Server

Wersja produktu

10.50

Numer kompilacji produktu

10.50.0000.00

Identyfikator zdarzenia

1205

Źródło zdarzenia

MSSQLSERVER

Składnik

SQLEngine

Nazwa symboliczna

LK_VICTIM

Tekst komunikatu

Transakcji (identyfikator procesu % d) został zakleszczony %.*ls zasobów z innym procesem i zostało wybrane jako ofiara zakleszczenie.Uruchom ponownie transakcji.

Wyjaśnienie

Zasoby są dostępne w kolejności powodujące konflikt w oddzielnej transakcji, przyczyną zakleszczenie.Na przykład:

  • Aktualizacje Transaction1 Table1.Row1, podczas gdy aktualizuje Transaction2 Table2.Row2.

  • Próbie aktualizacji Transaction1 Table2.Row2 , ale jest zablokowana, ponieważ nie została jeszcze zatwierdzona Transaction2.

  • Transaction2 teraz próbuje zaktualizować Table1.Row1 , ale jest zablokowana, ponieważ nie dokonał Transaction1.

  • Zakleszczenie występuje, ponieważ Transaction1 czeka Transaction2 do ukończenia, ale Transaction2 jest oczekiwanie na Transaction1 zakończyć.

System będzie wykrywać to zakleszczenie i będzie wybierz jedną z transakcji jako ofiara i wystawi tę wiadomość, wycofywanie transakcji pokrzywdzonego.Aby uzyskać więcej informacji na temat zakleszczenia, zobacz Deadlocking.

Akcja użytkownika

Wykonać ponownie transakcji.Możesz również poprawić aplikacji w celu uniknięcia zakleszczenia.Transakcja, która została wybrana jako ofiarą mogą być ponowiona i prawdopodobnie powiodła się, w zależności od tego, jakie operacje są wykonywane jednocześnie.

Aby zapobiec lub uniknięcia zakleszczenia wystąpienia, należy rozważyć posiadające wszystkie wiersze dostępu transakcji w tej samej kolejności (tabela1, następnie tabela2); w ten sposób, chociaż blokowania może wystąpić zakleszczenie nie wystąpi.Aby uzyskać więcej informacji na temat akcje, zobacz Wykrywanie i kończące zakleszczenia.