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.