Lucrul cu Transaction Log

Uneori există impresia că jurnalul de tranzacții are o viață. Spațiul din interiorul fișierului jurnal poate crește și micșora, fără nici un motiv aparent a fost. Dacă vă simțiți pierdut atunci când se lucrează cu revista, nu esti singur. Această secțiune va pune puțină lumină asupra vieții interioare a jurnalului de tranzacții.

Lumea interioară a jurnalului de tranzacții

Registrul de tranzacții conține toate tranzacțiile de baze de date. Dacă serverul șterge jurnalul de tranzacții, toate înregistrate în tranzacție folosit pentru recuperare. În acest caz, toate parțial prăvălit tranzacția și rezilia cele care au fost confirmate în jurnalul de tranzacții, dar nu a fost încă scris fișierul de date.

Practic, acest jurnal poate fi gândit ca o listă secvențială a tranzacțiilor sortate după data și ora. În același timp, pe un nivel fizic SQL Server înregistrează diferite părți ale jurnalului fizic în unitățile virtuale, fără nici o ordine anume. Unele părți ale acestuia pot fi în funcțiune, în timp ce alte părți sunt disponibile pentru rescrierea, cum ar fi Changeling.

Împărțirea în părți active și inactive

Toate tranzacțiile în jurnal pot fi împărțite în două grupe (Fig. 36.4).

tranzacții active - cele care nu au fost încă confirmate și nu sunt înregistrate în fișierul de date.

tranzacție inactivă - care sunt anterioare cea mai timpurie tranzacție activă.

Deoarece toate tranzacțiile sunt de diferite durată și confirmate la momente diferite, probabilitatea ca partea activă a revistei va fi tranzacții angajate, este destul de mare. Partea activă a jurnalului nu conține în mod necesar tranzacții numai necontractate - include toate tranzacțiile de la începutul dintre cele mai vechi tranzacții nealiniate. Doar o singură tranzacție neconfirmat foarte vechi poate face o foarte mare parte a jurnalului activ.

Fig. 36,4. tranzacție Inactiv precede cea mai veche activ

tranzacție Puncte de control

Înțelegerea modului în care SQL Server utilizează punctele de control în jurnalul de tranzacții, este esențial pentru înțelegerea procesului de arhivare și ștergerea jurnalului. Punctele de control se calculează cantitatea de muncă necesară pentru a restabili baza de date.

Punctul de control este setat automat atunci când una dintre următoarele condiții.

Atunci când instrucțiunea ALTER DATABASE pentru a schimba o anumită bază de date parametru.

Când serverul se oprește.

În cazul în care numărul de intrări jurnal depășește volumul de muncă specificat în opțiunile de configurare a serverului interval de recuperare.

În cazul în care baza de date este instalat modelul simplu de recuperare sau de modul de compresie și jurnalul de tranzacții este umplut la 70%.

Punctele de control pot fi, de asemenea, inițiată manual de către o comandă de control. La instalarea punctului de referință, următoarele acțiuni.

Registrul de tranzacții este marcat punctul de control de zonă.

Registrul înregistrează instalarea punctului de control, care conține următoarele:

• cea mai veche tranzacție activă;

• cea mai veche tranzacție care nu a fost încă replicat în replicarea tranzacțională;

• o listă a tuturor tranzacțiilor active,;

• informații cu privire la cantitatea de muncă necesară pentru derularea înainte a bazei de date.

Înregistrate pe disc umplut cu toate paginile de date și jurnalul

În esență, punctul de control trage o linie în situația actuală a bazei de date, și apoi scrie starea linia de separare între partea activă și inactivă a jurnalului

jurnal de tranzacții de backup

Executarea backup jurnal de tranzacții nu diferă de copia de rezervă completă sau diferențial. Există câteva diferențe notabile.

instrucțiuni T-SQL este după cum urmează:

SNA2 LOG BACKUP

TO DISK = 'e: \ Cha2Backup.bak'

Rezultatul se obține următorul:

Prelucrate 1 pagini pentru baza de date cu 1 CHA2 1. Fișierul „CHA2_log“ la dosar 9.

LOG BACKUP prelucrate cu succes 1 pagini în 0.060 secunde (0.042 MB / sec).

Când o copie de rezervă jurnal de tranzacții utilizează aceiași parametri, care sunt utilizate la copierea de rezervă a bazei de date. Dar, disponibil și două opțiuni suplimentare, care fac sens pentru doar copia de rezervă jurnal de tranzacții. Opțiunea no_truncate este de rezervă jurnalul de tranzacții în timpul operațiunii de recuperare; norecovery / opțiunea de așteptare este de a rula pe un server de backup suspendat. Ambele acești parametri, considerăm mai în detaliu în secțiunea „Restaurarea utilizând software-ul cod T-SQL.“

Jurnalul de tranzacții nu poate fi rezervat, dacă oricare dintre următoarele condiții.

Baza de date utilizează un model simplu de recuperare.

Modelul de recuperare a bazei de date este utilizat pentru operarea conectat în vrac, în masă, și fișierele bazei de date a fost pusă în aplicare au fost deteriorate.

au fost adăugate sau șterse fișierele bazei de date.

În oricare dintre aceste cazuri, ar trebui să efectuați o copie de rezervă completă a bazei de date.

Shrinking Transaction Log

Actualizare și ștergere nu poate mări dimensiunea fișierului de date. În același timp, datele sunt adăugate în fiecare operațiune în jurnalul de tranzacții. Registrul de tranzacții continuă să crească cu fiecare operațiune de modificare a datelor.

Soluția la această problemă este de a reveni la partea inactivă a revistei și eliminarea ulterioară a acestuia. În mod implicit, copia de rezervă jurnal de tranzacții va duce la trunchierea automată (de exemplu, compresia) (vezi. Fig. 36.3).

În cazul în care, de exemplu, discul este plin, jurnalul de tranzacții trunchierea poate necesita baze de date non-redundante. Cu toate acestea, nu există nici un fel de jurnal de compresie fără întăriri. În același timp, limbajul T-SQL oferă o trunchiere jurnal opțiune de tranzacții folosind comanda Backup. NoLog sau Backup. TruncateOnly (aceste comenzi sunt interschimbabile):

SNA2 LOG BACKUP

În cazul în jurnalul de tranzacții este trunchiat de mână, iar apoi de rezervă lui a fost creat de avertizare! copie, apoi un decalaj în secvența de tranzacție. Orice secvență de tranzacții care sunt după acest decalaj nu poate fi recuperată. Pentru a re-start pentru a crea o secvență de backup jurnal de tranzacții, este recomandat să efectuați o copie de rezervă completă a bazei de date.

jurnalul de tranzacții și un model simplu

Atunci când o bază de date utilizează un model simplu de recuperare, jurnalul de tranzacții se asigură că toate tranzacțiile angajate vor fi înregistrate în fișierul de date. În cazul în jurnalul de tranzacții este umplut la 70%, SQL Server stabilește un punct de întrerupere, și apoi trunchiază jurnalul. În acest caz, cantitatea de spațiu liber jurnal va fluctua, dar minimul este dimensiunea părții sale active.