2011-02-12 12 views
8

Eventuali duplicati:
What happens to an uncommitted transaction when the connection is closed?SQL Server e la perdita di connessione nel mezzo di una transazione

Che cosa accadrebbe se perdere la connessione nel bel mezzo di una transazione?

Immagino che se la transazione non viene mai commessa e potrebbe essere eseguita di nuovo, ma ... c'è un modo per connettermi e riportarla su un punto salvato e continuare con le cose che ho già?

Cordiali saluti.

+0

quale connessione state parlando di. Solo la connessione a sql-server o la connessione di rete del client al server. Questo potrebbe anche utilizzare alcune connessioni VPN ecc. –

+0

la connessione a sql-server. – vtortola

+0

Correlati: http://stackoverflow.com/q/1539564/1569 –

risposta

8

Se si perde la connessione nel corso di una transazione, non è più possibile immettere nuovamente questa transazione da una connessione diversa. Se la connessione viene interrotta, SQL Server eseguirà automaticamente il rollback di tutte le transazioni non vincolate. Quindi, se ciò accade, semplicemente ricollegati e troverai il tuo database nello stesso stato in cui si trovava prima di iniziare la transazione (supponendo ovviamente che non ci siano altri utenti che potrebbero averlo cambiato in mezzo.

2

Generalmente, qualsiasi interruzione la transazione verrà eseguito il rollback. sia il client si disconnette, CommandTimeout o il server si riavvia.

Questo è atomica in ACID

la capacità di "pick up" di una transazione in cui si era interrotto non ha senso

  • altre operazioni che accadono/la transazione LSN sarà fuori uso
  • strutture interne vengono modificate come parte di una scrittura (indici, ecc)/il database non è coerente
+0

Non esiste un problema * fondamentale * con TXN a lunga durata. Un DBMS potrebbe implementarli come un normale TXN "normale". Cioè dovrebbe mantenere tutte le serrature/versioni di righe/... che il TXN detiene/richiede. L'unica cosa è: è molto poco pratico. Le applicazioni in crash richiederebbero la pulizia manuale, vincolerebbero le risorse del server e nella maggior parte dei casi in cui vengono utilizzati i database SQL, le probabilità di commettere un TXN di ore o persino di giorni sarebbero ridotte a inesistenti. –

Problemi correlati