Un jurnal de tranzacții creste neasteptat sau devine complet în SQL Server

Traduceri articole Traduceri articole
ID articol: 317375 - View products that this article applies to.
Măriți totul | Reduceți totul

În această pagină

Rezumat

Dacă opțiunea autogrow este stabilit în Microsoft SQL Server 2005 și ulterioare versiuni, SQL Server 2000, și SQL Server 7.0, fișierele de log tranzacția poate extinde automat la dimensiunea de fișier jurnal maximă de 2 terabytes (TB) per fișier jurnal.

De obicei, dimensiunea de fișier jurnal de tranzacții stabilizează atunci când acesta poate stoca numărul maxim de tranzac?ii care pot apărea între tranzacție jurnal truncations care sunt declanșate de punctele de control sau tranzacție jurnal de backup-uri.

Cu toate acestea, în unele cazuri tranzacție jurnal mai deveni foarte mari și a alerga afară de spațiu sau de a deveni complet. De obicei, primiți următorul mesaj de eroare atunci când un fișier jurnal de tranzacții folose?te spa?iu-disc disponibil și nu se poate extinde mai:
Eroare: 9002, severitatea: 17, stat: 2
Fișierul jurnal pentru baza acoperire de date ' %. * ls' este plin.
Dacă utilizați SQL Server 2005, primiți un mesaj de eroare asemănător următorului:
Eroare: 9002, severitatea: 17, stat: 2
Jurnalul de tranzacții pentru baza acoperire de date ' %. * ls' este plin. Pentru a afla de ce nu pot fi refolosite spațiu în Jurnalul de, a se vedea coloana log_reuse_wait_desc în sys.databases
Pe lângă acest mesaj de eroare, SQL Server poate marca baze acoperire de date ca suspect, din cauza lipsei de spațiu pentru extinderea de Jurnalul de tranzacții. Pentru mai multe informații despre modul de a recupera de la această situație, consultați subiectul "Spa?iu-disc insuficient" în SQL Server Books Online.

În plus, tranzacția Jurnalul de expansiune pot apărea pentru unul din următoarele motive sau în unul dintre următoarele scenarii:
  • Un fișier jurnal de tranzacții foarte mare.
  • Tranzacțiile poate eșua și pot începe să se rostogolească înapoi.
  • Tranzacțiile poate lua o lungă perioadă de marcă de timp pentru a finaliza.
  • Pot apărea probleme de performanță.
  • Blocarea pot să apară.
  • Baza acoperire de date este participarea la un grup de disponibilitatea AlwaysOn.

Informații suplimentare

Tranzacția Jurnalul de expansiune pot să apară pentru unul din următoarele motive sau scenarii.


Notă În SQL Server 2005 și versiunile ulterioare, puteți revizui coloanele log_reuse_wait și log_reuse_wait_desc de sys.databases catalog de vedere pentru a determina ce tranzacție jurnal spațiu nu este reutilizat și de ce nu pot fi trunchiate Jurnalul de tranzacții.


Tranzacțiile nevalidate

Foarte mari tranzacții

Operațiuni: DBCC DBREINDEX și de a crea indicele

La restaurarea la tranzacție jurnal de backup-uri

Aplicațiile client nu procesează toate rezultatele

Interogări marcă de timp înainte de o tranzacție jurnal finisaje extinderea și primiți mesaje de eroare "Log complet" false

Unreplicated tranzacții

AlwaysOn 'AVAILABILITY_REPLICA' aplicarea tranzacție jurnal înregistrări la o bază acoperire de date secundare

Informații avansate

Jurnalul de tranzacții pentru orice bază acoperire de date este administrat ca un set de fișiere de jurnal virtual (VLFs). SQL Server determină VLF dosar sizes intern bazate pe dimensiunea totală a log dosar și Incrementul de creștere care este utilizat atunci când log se extinde. Un jurnal întotdeauna se extinde în unități de toată VLFs și se poate comprima doar la limita VLF. O VLF poate exista într-una din trei stări: ACTIVE, RECUPERABILĂ și REFOLOSIBILE.
  • Activ: O parte activă a jurnal incepe de la minim jurnal număr de secvență (LSN) care reprezintă o tranzacție activă (necontractate). O parte activă a jurnal se termină la LSN ultimul-scris. Orice VLFs care conțin orice parte din jurnalul activă sunt considerate active VLFs. (spațiu nefolosit în Jurnalul fizic nu este o parte din orice VLF).
  • RECUPERABILĂ: partea de jurnal care vine înainte de tranzacție activ cel mai vechi numai este necesară pentru a menține o secvență de jurnal de rezervă pentru recuperare.
  • REFOLOSIBILE: dacă tu nu sunt menținerea tranzacție jurnal de backup-uri, sau în cazul în care youalready susținute de jurnal, SQL Server reutilizează VLFs înainte de activetransaction mai vechi.
Când SQL Server ajunge la sfârșitul fișierul jurnal fizice, începe reutilizarea că spațiul în fișierul fizic prin emiterea de o operație de CIRCLING înapoi la începutul de fișiere. În vigoare, SQL Server reciclează spațiul în fișierul jurnal, care nu mai este necesară pentru scopuri de recuperare sau de rezervă. În cazul în care este între?inut o secvență de rezervă jurnal, partea din jurnalul înainte de minim LSN nu se poate suprascrie până când ați spate sus sau trunchia acele înregistrări jurnal. După ce efectuați backup jurnal, SQL Server poate cerc la începutul fișierului. După SQL Server cercurile înapoi pentru a începe să scrie jurnal înregistrări mai devreme în fișierul jurnal, partea reutilizabile de jurnal este apoi între sfârșitul de jurnal logică și o parte activă a jurnal.

Pentru mai multe informa?ii, consulta?i subiectul "Tranzacție jurnal fizice arhitectura" în SQL Server Books Online. În plus, puteți vedea o diagramă și discuții de acest lucru pe pagina 190 din "interior SQL Server 7.0" (Soukup, Ron. Interiorul Microsoft SQL Server 7.0, Microsoft Press, 1999), și, de asemenea, pe paginile 182 la 186 de "interior SQL Server 2000" (Delaney, deea. In interiorul Microsoft SQL Server 2000, Microsoft Press, 2000). Bazele acoperire de date SQL Server 2000 și SQL Server 7.0 au opțiuni de a autogrow și autoshrink. Utilizați aceste opțiuni pentru a vă ajuta să comprimați sau extinde log-ul tranzacției.

Pentru mai multe informații despre modul în care aceste opțiuni poate afecta server, faceți clic pe următorul număr de articol pentru a vedea articolul în bază de cunoștințe Microsoft:
315512 Considerente de configurare Autogrow și Autoshrink în SQL Server
Trunchiere de fișier jurnal de tranzacții diferă de compresie de fișier jurnal de tranzacții. Când SQL Server trunchiază un fișier jurnal de tranzacții, aceasta înseamnă că conținutul de acest fișier (de exemplu, tranzacțiile angajat) se elimină. Cu toate acestea, atunci când vizualizați dimensiunea fișierul dintr-o perspectivă de spațiu disc (de exemplu, în Windows Explorer sau utilizând comanda dir ), dimensiunea rămâne neschimbat. Cu toate acestea, spațiul din interiorul fișierul .ldf acum pot fi refolosite de noi tranzacții. Numai atunci când SQL Server se micșorează dimensiunea de fișier jurnal de tranzacții vedeți de fapt o schimbare în mărimea fizică din fișierul jurnal.

Pentru mai multe informații despre cum la spre crevet jurnalele de tranzacție, faceți clic pe următoarele numere de articol pentru a vedea articolele în bază de cunoștințe Microsoft:
256650 Cum de a micșora Jurnalul de tranzacții SQL Server 7.0
272318 Scădere Jurnalul de tranzacții în SQL Server 2000 cu DBCC SHRINKFILE
Pentru mai multe informații despre SQL Server 6.5 tranzacție jurnal de utilizare, faceți clic pe următorul număr de articol pentru a vedea articolul în bază de cunoștințe Microsoft:
110139 Cauzele de SQL tranzacție jurnal de umplere

Cum de a localiza interogările care consuma o cantitate mare de spațiu de jurnal în SQL Server 2005 și versiunile ulterioare

În SQL Server 2005 și versiunile ulterioare, puteți utiliza vizualizarea sys.dm_tran_database_transactions management dinamic (DMV) a localiza interogări care consumă cantități mari de spațiu de jurnal. Următoarele coloane în sys.dm_tran_database_transactions DMV pot fi utile:
  • database_transaction_log_bytes_used
  • database_transaction_log_bytes_used_system
  • database_transaction_log_bytes_reserved
  • database_transaction_log_bytes_reserved_system
  • database_transaction_log_record_count
Poate interogare în coloana de sql_handle a sys.dm_exec_requests DMV pentru a obține textul declarație reală care consumă cantități mari de spațiu de jurnal. Puteți face acest lucru prin aderarea sys.dm_tran_database_transactions DMV și sys.dm_tran_session_transactions DMV pe coloana de transaction_id, și apoi să adăugați o asociere suplimentare cu sys.dm_exec_requests pe coloana session_id.

Pentru mai multe informații despre sys.dm_tran_database_transactions DMV, du-te la sys.dm_tran_database_transactions (Transact-SQL) Site-ul Rețea Microsoft pentru dezvoltatori (MSDN).

Pentru mai multe informații despre sys.dm_tran_session_transactions DMV, du-te la sys.dm_tran_session_transactions (Transact-SQL) Site-ul MSDN.

Pentru mai multe informații despre sys.dm_exec_requests DMV, du-te la sys.dm_exec_requests (Transact-SQL) Site-ul MSDN.

Proprietă?i

ID articol: 317375 - Ultima examinare: 13 ianuarie 2014 - Revizie: 3.0
Se aplică la:
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Cuvinte cheie: 
kbsqlsetup kbinfo kbmt KB317375 KbMtro
Traducere automată
IMPORTANT: Acest articol este tradus cu ajutorul software-ului Microsoft de traducere automată ?i poate fi corectat prin intermediul tehnologiei Community Translation Framework (CTF). Microsoft oferă articole traduse automat, post-editate de comunitate ?i articole traduse de oameni, pentru a permite accesul la toate articolele din Baza noastră de cuno?tin?e în mai multe limbi. Articolele traduse automat ?i post-editate pot con?ine gre?eli de vocabular, sintaxă ?i/sau gramatică. Microsoft nu este responsabil de inexactită?ile, erorile sau daunele cauzate de traducerea gre?ită a con?inutului sau de utilizarea acestuia de către clien?i. Găsi?i mai multe informa?ii despre traducerea în colaborare la http://support.microsoft.com/gp/machine-translation-corrections/ro.
Face?i clic aici pentru a vizualiza versiunea în limba engleză a acestui articol: 317375

Trimite?i feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com