Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Si applica a:SQL Server
Database SQL di
AzureIstanza gestita di SQL di
AzureDatabase SQL in Microsoft Fabric
Dettagli
| Attributo | Valore |
|---|---|
| Nome prodotto | SQL Server |
| ID evento | 1205 |
| Origine evento | MSSQLSERVER |
| Componente | SQLEngine |
| Nome simbolico | LK_VICTIM |
| Testo del messaggio | La transazione (ID di processo %d) è stata interrotta a causa di un deadlock delle risorse %.*ls con un altro processo. Ripetere la transazione. |
Spiegazione
L'accesso alle risorse è in conflitto in caso di transazioni separate, causando un deadlock. Ad esempio:
-
Transaction1gli aggiornamentiTable1.Row1, mentre Transaction2 aggiornaTable2.Row2 -
Transaction1tenta di aggiornareTable2.Row2ma è bloccato perchéTransaction2non ha ancora eseguito il commit e non ha rilasciato i blocchi - Transaction2 tenta ora di aggiornare
Table1.Row1ma è bloccato perchéTransaction1non ha eseguito il commit e non ha rilasciato i blocchi - Si verifica un deadlock perché
Transaction1è in attesa del completamento diTransaction2, maTransaction2è in attesa del completamento diTransaction1.
Il sistema rileva questo deadlock e sceglie una delle transazioni coinvolte come vittima . Invia quindi questo messaggio di errore, rollback della transazione della vittima. Per informazioni dettagliate, vedere Deadlock.
Azione dell'utente
I deadlock sono nella maggior parte dei casi problemi correlati all'applicazione e richiedono agli sviluppatori di applicazioni di apportare modifiche al codice. Un approccio quando viene visualizzato l'errore 1205 consiste nell'eseguire di nuovo le query. Per altre informazioni, vedere 'app Deadlock Simulator for Developers: How to Handle a SQL Deadlock issue in Your App.
È inoltre possibile modificare l'applicazione per evitare i deadlock. La transazione scelta come vittima può essere ritentata e probabilmente ha esito positivo, a seconda delle operazioni eseguite contemporaneamente.
Per evitare che si verifichino deadlock, prendere in considerazione la possibilità di accedere a tutte le transazioni nello stesso ordine (Table1, quindi Table2). In questo modo, anche se il blocco potrebbe verificarsi, viene evitato un deadlock.
Per altre informazioni, vedere Gestione dei deadlock e riduzione dei deadlock.