Cum se șterge o tranzacție distribuită suspendată în ms sql

Dacă efectuați o tranzacție distribuită cu Microsoft SQL Server pe o eroare de server I / O sau o oprire server / bază de date, atunci tranzacția este coordonatorul (DTC) și alte baze de date va fi derulată înapoi (ROLLBACK), precum și în baza de date afectate la SQL Server poate nu vă întoarceți. Acest lucru se datorează faptului că, ca urmare a bazei de date / eșec deconectare punct de vedere tehnic nu a putut rostogoli.







Tranzacția distribuită în închisoare se va manifesta, printre altele, prin faptul că jurnalul nu este trunchiat în baza de date (TRANSACTION LOG), chiar și în modul de recuperare SIMPLE.

Dacă tranzacția a făcut o mulțime de modificări în baza de date, acestea nu vor fi toate înregistrate și vor mări dimensiunea jurnalului în sine și mărimea copiilor de rezervă. În cazul în care tranzacția a blocat resursele, în mod logic, acestea trebuie, de asemenea, să fie blocate înainte de a fi rulate înapoi (deși nu am verificat-o).

Cum pot diagnostica o tranzacție distribuită suspendată?







Această comandă poate produce aproximativ următoarele:

Rețineți numele DTCXact, ceea ce înseamnă că tranzacția a fost inițiată de Coordonatorul de tranzacții distribuite.

Aproximativ După ce am învățat SPID, putem afla ce proces a funcționat în tranzacție:

Îl putem omorî (KILL.). Dar nu face asta.

Suspendarea unei tranzacții distribuite, încheierea procesului clientului nu se va opri - există acum doar în baza de date afectată, procesul și coordonatorul despre acesta au fost deja uitate.

Cum închei o tranzacție distribuită suspendată?

Internetul cu privire la întrebarea "ROLLBACK DTCXact" și "DTCXact" dezvăluie articole stupide pe teme generale sau discuții fără a răspunde la întrebare.

Recent, am folosit această metodă - pentru a muta baza de date în modul cu un singur utilizator, cu redarea tuturor tranzacțiilor:

Am fost convins că tranzacția a revenit și a încercat să se traducă într-un utilizator multiplu:

Adevărul după aceea, așa cum suspectez, din cauza daunelor logice (care nu a fost consecința, ci cauza tranzacției distribuite suspendate), baza de date a intrat în modul SUSPECT. A trebuit să o opresc (decolare) și să o pornesc (ia-o pe). Este necesar, aparent, nu numai să întoarceți paginile de date "înapoi" prin răsturnare, ci și să restaurați o parte din paginile "înainte" prin intermediul revistei de la un anumit punct.

Ca rezultat, baza de date a câștigat, tranzacția distribuită a revenit, revista a devenit obsedată.







Trimiteți-le prietenilor: