Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance
Azure SQLDatabáze SQL v Microsoft Fabric
Podrobnosti
| Atribut | Hodnota |
|---|---|
| Název produktu | SQL Server |
| ID události | 1205 |
| Zdroj událostí | MSSQLSERVER |
| Komponenta | SQLEngine |
| Symbolický název | LK_VICTIM |
| Text zprávy | Transakce (ID procesu %d) byla u %prostředků .*ls s jiným procesem zablokovaná a byla vybrána jako oběť vzájemného zablokování. Znovu spusťte transakci. |
Vysvětlení
Prostředky jsou přístupné v konfliktních pořadí u samostatných transakcí, což způsobuje vzájemné zablokování. Například:
-
Transaction1aktualizaceTable1.Row1, zatímco aktualizace Transaction2Table2.Row2 -
Transaction1se pokusí aktualizovatTable2.Row2, ale je zablokovaný, protožeTransaction2zatím nebyly potvrzeny a neuvolnily jeho zámky. - Transaction2 se teď pokouší aktualizovat
Table1.Row1, ale je blokovaný, protožeTransaction1nebyl potvrzen a nevyvolal jeho zámky. - K zablokování dochází, protože
Transaction1čeká na dokončeníTransaction2, aleTransaction2čeká na dokončeníTransaction1.
Systém zjistí toto zablokování a zvolí jednu z transakcí, které jsou součástí oběti. Potom tuto chybovou zprávu vydá a vrátí zpět transakci oběti. Podrobné informace naleznete v tématu zablokování.
Akce uživatele
Zablokování jsou ve většině případů problémy související s aplikací a vyžadují, aby vývojáři aplikací udělali změny kódu. Jedním z přístupů při zobrazení chyby 1205 je opětovné spuštění dotazů. Další informace najdete v tématu aplikace simulátoru vzájemného zablokování pro vývojáře: Jak zpracovat problém se vzájemným zablokováním SQL v aplikaci.
Aplikaci můžete také upravit, abyste se vyhnuli zablokování. Transakce zvolená jako oběť se může opakovat a pravděpodobně proběhne úspěšně v závislosti na tom, jaké operace se provádějí současně.
Chcete-li zabránit zablokování nebo se vyhnout zablokování, zvažte, že všechny transakce přistupují k řádkům ve stejném pořadí (Table1, pak Table2). Tímto způsobem se sice může dojít k blokování, ale zablokování se vyhne.
Další informace naleznete v tématu Zpracování zablokování a Minimalizace zablokování.