Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Microsoft distribuie remedierile Microsoft SQL Server 2005, 2008 și 2008 R2 ca fișier care poate fi descărcat. Deoarece remedierile sunt cumulative, fiecare versiune nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în ediția anterioară de remediere SQL Server 2005, 2008 și 2008 R2.

Simptome

Luați în considerare următorul scenariu:

  • Instalați Microsoft SQL Server 2005, Microsoft SQL Server 2008 sau Microsoft SQL Server 2008 R2 pe un computer.

  • Una sau mai multe baze de date se află în modelul de recuperare complet sau în masă.

  • Dimensiunea inițială a unui fișier jurnal de tranzacții pentru baza de date este mică. Cu toate acestea, fișierul de tranzacție crește mare.

  • Incrementul de creștere autogrow al fișierului jurnal de tranzacții este configurat la o dimensiune mică. De exemplu, incrementul de creștere autogrow este configurat la un megaoctet sau la un procent. Sau faceți fișierul jurnal de tranzacții să crească utilizând o creștere manuală mică.

  • Fișierul jurnal de tranzacții crește cu o incrementare mică de creștere. După un timp, fișierul jurnal de tranzacții este mare.

    De exemplu, fișierul jurnal de tranzacții crește de la o sută de megabyți la zece gigabyți. Fișierul jurnal de tranzacții crește cu un increment megaoctet în fiecare creștere.

În acest scenariu, este posibil să întâmpinați următoarele probleme:

  • Recuperarea bazei de date este lentă atunci când baza de date este pornită dacă există un volum mare de lucru de recuperat.

    De exemplu, o tranzacție este în așteptare deschisă pentru o perioadă lungă de timp. Sau multe tranzacții de dimensiuni mici nu sunt comise atunci când SQL Server este închis sau repornit. În acest caz, este posibil să primiți o eroare pentru un timp de recuperare estimat lung în faza de analiză, în faza de anulare sau în faza de refacere. Eroarea seamănă cu următoarea și este înregistrată în fișierul jurnal de erori SQL Server 2005:

    Analiza bazei de date "mydatabase" (7) este 0% finalizată (aproximativ 1234 secunde rămân). Acesta este doar un mesaj informativ. Nu este necesară nicio acțiune a utilizatorului.

  • Recuperarea bazei de date este lentă atunci când un fișier de backup complet al bazei de date și o secvență de jurnal de tranzacții suplimentare sunt restaurate dacă baza de date este adusă online.

    Notă Pentru a aduce baza de date online în timpul operațiunii de restaurare, utilizați sintaxa WITH RECOVERY sau opțiunile WITH STANDBY = <> sintaxă.

  • Recuperarea în oglindă a bazei de date este lentă pe un server partener în perechea de reproducere în oglindă.

  • Progresul agentului cititorului de jurnal pentru replicarea tranzacțiilor este lent pentru următoarele operațiuni:

    • Jurnalul de tranzacții al unei baze de date de editor este analizat.

    • O comandă este adăugată într-o bază de date de distribuire.

    • Tranzacțiile sunt reproduse.

  • Performanța lentă are loc atunci când se creează un instantaneu al bazei de date dacă sunt înregistrate multe tranzacții sau dacă jurnalele de tranzacții rămân active pentru mult timp. Această problemă apare deoarece instantaneul trebuie să ruleze recuperarea și jurnalele de tranzacții trebuie să fie readăă la versiunea anterioară.

  • Performanța lentă are loc atunci când utilizați sintaxa DBCC CHECKDB pentru a crea un instantaneu ascuns al bazei de date care trebuie să recupereze complet instantaneul bazei de date pentru a rula verificările consistenței.

Cauză

Aceste probleme apar deoarece fișierele jurnal virtuale (VLFs) dintr-un fișier jurnal de tranzacții pot provoca performanțe lente atunci când SQL Server scanează prin aceste FIȘIERE VLFs în timpul următoarelor operațiuni:

  • Recuperare bază de date

  • Reproducerea în oglindă a bazei de date

  • Instantaneu bază de date

  • Activități de citire a jurnalului de reproducere a tranzacțiilor bazei de date

Atunci când un fișier jurnal de tranzacții pentru o bază de date este crescut cu incremente mici în condiții extreme de creștere, mii până la sute de mii de fișiere VLFs sunt prezente într-un singur set de fișiere jurnal de tranzacții (.ldf). Cu toate acestea, creșterea mare a jurnalului cu incremente mari creează doar câteva VLFs prin comparație. De exemplu, mai multe pot fi mai mici de 100 de fișiere VLFs.

Notă Fișierele virtuale sunt diviziunile sau segmentele utilizate intern de SQL Server în fișierul jurnal de tranzacții.
 

Rezolvare

Informații despre actualizarea cumulativă

SQL Server 2008 R2


Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 6. Pentru mai multe informații despre cum să obțineți acest pachet de actualizare cumulativă pentru SQL Server 2008 R2, faceți clic pe următorul număr de articol pentru a vizualiza articolul în Baza de cunoștințe Microsoft:

2489376 Pachetul de actualizare cumulativă 6 pentru SQL Server 2008 R2 Notă Deoarece compilările sunt cumulative, fiecare ediție nouă de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în versiunea de remediere anterioară a SQL Server 2008 R2. Vă recomandăm să luați în considerare aplicarea celei mai recente remedieri care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

981356 Compilările SQL Server 2008 R2 care au fost lansate după lansarea SQL Server 2008 R2

SQL Server 2008 Service Pack 1

Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 12 pentru SQL Server 2008 Service Pack 1.

Notă Deoarece compilările sunt cumulative, fiecare lansare de remediere nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în versiunea de remediere anterioară SQL Server 2008. Microsoft recomandă să luați în considerare aplicarea celei mai recente remedieri care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

970365 Compilările SQL Server 2008 care au fost lansate după lansarea SQL Server 2008 Service Pack 1 pentru Microsoft SQL Server 2008 sunt create pentru anumite pachete Service Pack SQL Server. Trebuie să aplicați o remediere rapidă SQL Server 2008 Service Pack 1 la o instalare de SQL Server 2008 Service Pack 1. În mod implicit, orice remediere rapidă furnizată într-un SQL Server pachet Service Pack este inclusă în următorul pachet Service Pack SQL Server.

SQL Server 2008 Service Pack 2


Remedierea pentru această problemă a fost lansată pentru prima dată în Actualizarea cumulativă 2 pentru SQL Server 2008 Service Pack 2.

Notă Deoarece compilările sunt cumulative, fiecare lansare de remediere nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în versiunea de remediere anterioară SQL Server 2008. Microsoft recomandă să luați în considerare aplicarea celei mai recente remedieri care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

2402659 Compilările SQL Server 2008 care au fost lansate după lansarea SQL Server 2008 Service Pack 2 SQL Server 2008 sunt create pentru anumite pachete Service Pack SQL Server. Trebuie să aplicați o remediere rapidă SQL Server 2008 Service Pack 2 la o instalare de SQL Server 2008 Service Pack 2. În mod implicit, orice remediere rapidă furnizată într-un SQL Server pachet Service Pack este inclusă în următorul pachet Service Pack SQL Server.

SQL Server 2005 Service Pack 3

Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 13 pentru SQL Server 2005 Service Pack 3.

Notă Deoarece compilările sunt cumulative, fiecare lansare de remediere nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în versiunea de remediere anterioară SQL Server 2005. Microsoft recomandă să luați în considerare aplicarea celei mai recente remedieri care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

960598 Compilările SQL Server 2005 care au fost lansate după lansarea SQL Server 2005 Service Pack 3 pentru Microsoft SQL Server 2005 sunt create pentru anumite pachete Service Pack SQL Server. Trebuie să aplicați o remediere rapidă SQL Server 2005 Service Pack 3 la o instalare de SQL Server 2005 Service Pack 3. În mod implicit, orice remediere rapidă furnizată într-un SQL Server pachet Service Pack este inclusă în următorul pachet Service Pack SQL Server.
 

SQL Server 2005 Service Pack 4

Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 1 pentru SQL Server 2005 Service Pack 4.

Notă Deoarece compilările sunt cumulative, fiecare lansare de remediere nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în versiunea de remediere anterioară SQL Server 2005. Microsoft recomandă să luați în considerare aplicarea celei mai recente remedieri care conține această remediere rapidă.

Trebuie să aplicați o remediere rapidă SQL Server 2005 Service Pack 4 la o instalare de SQL Server 2005 Service Pack 4. În mod implicit, orice remediere rapidă furnizată într-un SQL Server pachet Service Pack este inclusă în următorul pachet Service Pack SQL Server.

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.

Soluție de evitare

Instalați această remediere rapidă și reporniți SQL Server poate îmbunătăți performanța de recuperare. De exemplu, performanța poate fi îmbunătățită pentru următoarele operațiuni după ce instalați această remediere rapidă și reporniți SQL Server:

  • Recuperare bază de date

  • Reproducerea în oglindă a bazei de date

  • Instantaneu bază de date

  • Activități de citire a jurnalului de reproducere a tranzacțiilor bazei de date


Dacă nu puteți instala această remediere rapidă, puteți efectua următoarele soluții pentru a atenua o problemă existentă și a preveni apariția unei probleme viitoare.

Atenuarea unei probleme existente

  • Așteptați terminarea operațiunii

    de restaurare sau recuperare Dacă aveți o bază de date nerecuperată care se confruntă cu o performanță lentă atunci când restaurați sau recuperați baza de date, poate fi necesar să așteptați terminarea operațiunii de restaurare sau recuperare. De exemplu, este posibil să vedeți starea offline sau starea de recuperare în SQL Server Management Studio (SSMS) pentru o bază de date nerecuperată. Oprirea SQL Server nu oferă, de obicei, ajutor pentru o recuperare lentă și poate dura mai mult timp pentru a repeta aceeași fază de analiză de recuperare, faza de refacere sau faza de anulare.

  • Evitați restaurarea secvenței de jurnal de tranzacții care conține mii de fișiere VLFs

    Dacă vă confruntați cu o performanță lentă în timp ce restaurați și recuperați o bază de date utilizând un fișier de backup, puteți evita restaurarea secvențelor jurnalului de tranzacții care conțin mii de fișiere VLFs. Pentru a identifica fișierul de backup care are cele mai multe fișiere jurnal virtuale înregistrate, utilizați următoarea instrucțiune pentru a vedea coloanele FirstLSN și LastLSN în fișierele de backup ale jurnalului:
    RESTAURAȚI ANTETUL DOAR DE PE DISK='C:\folder\file.trn'

    Puteți decide să evitați restaurarea fișierelor de backup ale jurnalului. Sau puteți utiliza instrucțiunea STOP AT din comenzile RESTORE pentru a evita părțile foarte fragmentate ale jurnalelor de tranzacții. Dacă nu restaurați complet secvențele de jurnal până la cel mai recent punct din timp în timpul unui scenariu de recuperare a erorilor, pierderile de date apar în baza de date SQL Server. Această pierdere de date apare deoarece nu se păstrează toate tranzacțiile. Prin urmare, există o decizie de compromis de afaceri. Puteți restaura complet un jurnal de tranzacții foarte fragmentat. Totuși, această operațiune poate dura mai multe ore. Sau puteți utiliza instrucțiunea STOP AT în recuperare pentru a opri recuperarea înainte de partea foarte fragmentată a jurnalului. Cu toate acestea, tranzacțiile lipsă pe care le omiteți se pierd.

    Notă Fără a instala această remediere rapidă, nu există de obicei nici un recurs sigur pentru recuperare accelerată după ce reporniți SQL Server. SQL Server trebuie să găsească lista de fișiere VLFs pentru a analiza fișierele jurnal, pentru a reface tranzacțiile finalizate, apoi pentru a anula tranzacțiile incomplete pentru a termina recuperarea pentru a aduce baza de date online în siguranță. Nu puteți omite în siguranță tranzacțiile în timpul recuperării.

Împiedicarea unei apariții viitoare

  • Setați incrementul de creștere automată a bazei de date la o dimensiune

    corespunzătoare Dacă dimensiunea incrementării de creștere automată este prea mică, vor exista multe fișiere jurnal virtuale (VLFs) și este posibil să vă confruntați cu performanțe lente în SQL Server. Dacă dimensiunea incrementării de creștere automată este prea mare, interogările care fac jurnalele de tranzacții să crească automat pot fi nevoite să aștepte mult timp pentru a termina o creștere. Prin urmare, poate apărea o eroare de expirare în SQL Server. Pentru a rezolva aceste probleme, puteți seta dimensiunea incrementării de creștere automată pentru baza de date la o dimensiune corespunzătoare.

  • Eliminați numărul mare de fișiere VLFs și utilizați o creștere

    manuală Dacă multe fișiere VLFs se află în jurnalul de tranzacții, reduceți dimensiunea jurnalului de tranzacții și măriți-l înainte de a atinge nivelul maxim al cererii, utilizând o creștere manuală. De exemplu, jurnalul de tranzacții crește înapoi la o dimensiune medie rezonabilă într-un increment mare sau într-o singură creștere manuală. Prin urmare, dimensiunea jurnalului de tranzacții atinge o capacitate maximă, iar fișierele de backup jurnal sunt planificate în mod frecvent și periodic. În plus, jurnalul de tranzacții poate fi trunchiat și fișierele VLFs pentru jurnalul de tranzacții pot fi reutilizate într-un ciclu.

  • Cum se micșorează și se mărește manual

    jurnalul de tranzacții Pentru a corecta un jurnal care are prea multe fișiere VLFs, urmați acești pași pentru a restrânge jurnalul și a-l mări din nou manual:

    1. Dacă baza de date este într-un model de recuperare complet sau în masă, trebuie să faceți backup jurnalului de tranzacții pentru a permite trunchierea și reutilizarea fișierelor VLF active. NUME BAZĂ DE DATE JURNAL DE BACKUP PE DISK='C:\folder\log_backupfile.trn'
      Pentru mai multe informații despre cum să faceți backup fișierului jurnal de tranzacții utilizând SSMS, vizitați următorul site web Microsoft Developer Network (MSDN):

      Cum se face backup fișierului jurnal de tranzacții utilizând SSMSPentru mai multe informații despre cum să faceți backup fișierului jurnal de tranzacții utilizând instrucțiuni Transact-SQL, vizitați următorul site web MSDN:

      Cum se face backup fișierului jurnal de tranzacții utilizând instrucțiuni Transact-SQL

    2. Pentru a determina numele logic al fișierului jurnal de tranzacții, rulați una dintre următoarele instrucțiuni.
      Instrucțiunea 1
      exec sp_helpfile statement 2
      select * from sys.sysfiles Pentru a reduce dimensiunea fișierului jurnal de tranzacții la dimensiunea dorită, utilizați următorul cod:DBCC SHRINKFILE(transactionloglogicalfilename, TRUNCATEONLY)

    3. Puteți mări dimensiunea fișierului jurnal de tranzacții la o dimensiune corespunzătoare. Vă recomandăm să lăsați dimensiunea fișierului jurnal de tranzacții să crească la dimensiunea normală maximă. Prin urmare, se evită incrementarea autogrow. Pentru a seta dimensiunea jurnalului de tranzacții, utilizați pagina Proprietăți bază de date din SSMS sau utilizați următoarea sintaxă ALTER DATABASE:MODIFY FILE ( NAME = transactionloglogicalfilenae, SIZE=newtotalsize MB)
      Pentru mai multe informații despre cum să măriți dimensiunea unei baze de date în SSMS, vizitați următorul site web MSDN:

      Cum se mărește dimensiunea unei baze de date în SSMSPentru mai multe informații despre sintaxa ALTER DATABASE MODIFY FILE (MODIFICARE FIȘIER), vizitați următorul site web MSDN:

      Informații generale despre sintaxa ALTER DATABASE MODIFY FILE

Mai multe informații

Puteți verifica numărul de segmente VLF revizuind fișierul jurnal de erori SQL și găsind numărul secvenței de jurnal (LSN) în fiecare fișier de backup al jurnalului de tranzacții. Primele cifre aflate înaintea simbolului două puncte din LSN corespund numărului de LSN.

De exemplu, primul număr din primul mesaj informativ pentru LSN este 1. Cu toate acestea, primul număr din al doilea mesaj informativ pentru LSN este 100001. În acest scenariu, există 100.000 de fișiere VLFs care sunt utilizate între ora primului mesaj informativ și a celui de-al doilea mesaj informativ. Prin urmare, jurnalul de tranzacții fragmentate înregistrate care are multe fișiere jurnal virtuale (VLFs) seamănă cu următoarele:
 

{S-a făcut backup pentru Jurnal. Bază de date: numelemeu, data(ora creării): 2010/07/08(12:36:46), primul LSN: 1:5068:70, ultimul LSN: 1:5108:1, numărul de dispozitive dump: 1, informații despre dispozitiv: (FIȘIER=1, TIP=DISC: {'C:\folder\logbackup1.trn'}). Acesta este doar un mesaj informativ. Nu este necesară nicio acțiune a utilizatorului.

S-a făcut backup jurnalului. Bază de date: numelemeu, data(ora creării): 2010/07/08(15:36:46), primul LSN: 100001:5108:1, ultimul LSN: 100002:5108:1, numărul de dispozitive dump: 1, informații despre dispozitiv: (FIȘIER=2, TIP=DISC: {'C:\folder\logbackup2.trn'}). Acesta este doar un mesaj informativ. Nu este necesară nicio acțiune a utilizatorului.}

Următorul tabel oferă mai multe informații despre produsele sau instrumentele care verifică automat condiția descrisă în secțiunea "Simptome" din instanța dvs. de SQL Server și în versiunile de SQL Server în raport cu care se evaluează regula.
 

Software pentru reguli

Titlu regulă

Descriere regulă

Versiuni de produs pentru care se evaluează regula

Consultant centru de sistem

SQL Server cu replicarea tranzacțiilor, performanța agentului de citire de jurnal poate fi afectată din cauza dimensiunii jurnalului de tranzacții sau a numărului de VLF

În această instanță SQL Server consultant a detectat replicarea tranzacțiilor de prezență cu numărul de VLFs sau dimensiunea TLOG considerabil mai mare. Performanța agentului de citire a jurnalului este afectată negativ de dimensiunea jurnalului de tranzacții sau a numărului de VLF. Reduceți dimensiunea jurnalului de tranzacții și numărul de VLF pentru a îmbunătăți performanța agentului Log Reader.

SQL Server 2008

SQL Server 2008 R2

SQL Server 2012



 

Referințe

Pentru mai multe informații despre arhitectura fizică a jurnalului de tranzacții, vizitați următorul site web MSDN:

Informații generale despre arhitectura fizică a jurnalului

de tranzacții Pentru mai multe informații despre numerele de secvență de jurnal (LSN), vizitați următorul site web MSDN:

Informații generale despre numerele

secvenței de jurnal Pentru mai multe informații despre eroarea 1413 atunci când începe reproducerea în oglindă a bazelor de date, vizitați următorul site web MSDN:

Informații generale despre eroarea 1413 atunci când pornește

reproducerea în oglindă a bazei de date Pentru mai multe informații despre modul în care o structură de fișier jurnal poate afecta timpul de recuperare a bazei de date, vizitați următorul site web MSDN:

Cum poate afecta o structură de fișier jurnal timpul

de recuperare a bazei de date Pentru mai multe informații despre fișierele VLF jurnal de tranzacții, vizitați următorul site web MSDN:

Informații generale despre fișierul

jurnal de tranzacții Pentru mai multe informații despre crearea unui instantaneu al bazei de date, vizitați următorul site web MSDN:

Cum se creează un instantaneu al unei baze de datePentru mai multe informații despre modelul de servicii incrementale pentru SQL Server, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

935897 Un model de servicii incrementale este disponibil de la echipa de SQL Server pentru a livra remedieri rapide pentru problemele raportatePentru mai multe informații despre schema de denumire pentru actualizările SQL Server, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

822499Schemă de denumire nouă pentru pachetele de actualizări de software Microsoft SQL Server Pentru mai multe informații despre terminologia actualizărilor de software, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

824684 Descrierea terminologiei standard care este utilizată pentru a descrie actualizările de software Microsoft

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×