Applies ToMicrosoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Enterprise X64 Edition Microsoft SQL Server 2005 Evaluation Edition SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Workgroup SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup

Microsoft distribuuje opravy Microsoft SQL Server 2005, 2008 a 2008 R2 jako jeden soubor ke stažení. Vzhledem k tomu, že opravy jsou kumulativní, každá nová verze obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí SQL Server 2005, 2008 a 2008 R2 opravit vydání.

Příznaky

Zvažte následující scénář:

  • Do počítače nainstalujete Microsoft SQL Server 2005, Microsoft SQL Server 2008 nebo Microsoft SQL Server 2008 R2.

  • Jedna nebo více databází je v úplném nebo hromadně protokolovaném modelu obnovení.

  • Počáteční velikost souboru transakčního protokolu pro databázi je malá. Soubor transakce však roste velké.

  • Přírůstek automatického zvětšování souboru transakčního protokolu je nakonfigurovaný na malou velikost. Například přírůstek automatického růstu je nakonfigurovaný na jeden megabajt nebo na jedno procento. Nebo provedete zvýšení souboru transakčního protokolu pomocí malého ručního růstu.

  • Soubor transakčního protokolu roste o malý růstový přírůstek. Po chvíli je soubor transakčního protokolu velký.Například soubor transakčního protokolu roste ze sto megabajtů na deset gigabajtů. Soubor transakčního protokolu se v každém růstu zvětšuje o jeden megabajtový přírůstek.

V tomto scénáři může dojít k následujícím problémům:

  • Obnovení databáze je pomalé při spuštění databáze, pokud je k dispozici velký objem práce k obnovení.Například transakce čeká na dlouhou dobu otevření. Nebo velké množství transakcí, které mají malou velikost, se při vypnutí nebo restartování SQL Server nepotvrzí. V tomto případě se může zobrazit chyba pro dlouhou odhadovanou dobu obnovení ve fázi analýzy, ve fázi vrácení zpět nebo ve fázi opakování. Chyba se podobá následující a je zaznamenána v souboru protokolu chyb SQL Server 2005:

    Analýza databáze mydatabase (7) je dokončená o 0 % (zbývá přibližně 1234 sekund). Toto je jenom informační zpráva. Nevyžaduje se žádná akce uživatele.

  • Obnovení databáze je pomalé, když se obnoví úplný záložní soubor databáze a další posloupnost transakčních protokolů, pokud je databáze převedena do režimu online.Poznámka: Chcete-li přepnout databázi do režimu online během operace obnovení, použijte syntaxi WITH RECOVERY nebo WITH STANDBY = <možnosti> syntaxi.

  • Obnovení zrcadlení databáze je na partnerském serveru v páru zrcadlení pomalé.

  • Průběh agenta čtečky protokolů pro transakční replikaci je pomalý pro následující operace:

    • Transakční protokol databáze vydavatele je analyzován.

    • Do distribuční databáze se přidá příkaz.

    • Transakce se replikují.

  • K pomalému výkonu dochází při vytvoření snímku databáze, pokud je zaprotokolováno mnoho transakcí nebo pokud transakční protokoly zůstanou aktivní po dlouhou dobu. K tomuto problému dochází, protože snímek musí spustit obnovení a transakční protokoly musí být vrácena zpět.

  • K pomalému výkonu dochází, když použijete syntaxi DBCC CHECKDB k vytvoření skrytého snímku databáze, který musí k úplnému obnovení snímku databáze spustit kontroly konzistence.

Příčina

K těmto problémům dochází, protože soubory virtuálních protokolů (VLFs) v souboru transakčního protokolu mohou způsobit nízký výkon při SQL Server prohledávání těchto souborů VLFs během následujících operací:

  • Obnovení databáze

  • Zrcadlení databáze

  • Snímek databáze

  • Aktivity čtenáře protokolů transakční replikace databáze

Pokud je soubor transakčního protokolu pro databázi pěstován malými přírůstky v podmínkách extrémního růstu, jsou v jedné sadě souborů transakčního protokolu (.ldf) přítomny tisíce až stovky tisíc virtuálních počítačů. Velký růst protokolu o velké přírůstky ale ve srovnání vytvoří jenom několik virtuálních souborů VLF. Například několik může být menší než 100 virtuálních souborů.Poznámka: VLFs jsou divize nebo segmenty, které jsou interně používány SQL Server v souboru transakčního protokolu.  

Řešení

Informace o kumulativní aktualizaci

SQL Server 2008 R2

Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 6. Další informace o získání tohoto balíčku kumulativní aktualizace pro SQL Server 2008 R2 klepnutím na následující číslo článku databáze Microsoft Knowledge Base:

2489376 Kumulativní aktualizace balíčku 6 pro SQL Server 2008 R2 Poznámka: Vzhledem k tomu, že sestavení jsou kumulativní, každá nová verze opravy obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze opravy SQL Server 2008 R2. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

981356 Buildy SQL Server 2008 R2 vydané po vydání verze SQL Server 2008 R2

SQL Server 2008 Service Pack 1

Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 12 pro SQL Server 2008 Service Pack 1.

Poznámka: Vzhledem k tomu, že sestavení jsou kumulativní, každá nová verze opravy obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí SQL Server 2008 opravit vydání. Společnost Microsoft doporučuje zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

970365 Sestavení SQL Server 2008, která byla vydána po vydání SQL Server 2008 Service Pack 1 byla vydána microsoft SQL Server 2008 opravy hotfix jsou vytvořeny pro konkrétní SQL Server aktualizace Service Pack. Je nutné nainstalovat opravu hotfix SQL Server 2008 Service Pack 1 instalace SQL Server 2008 Service Pack 1. Ve výchozím nastavení je každá oprava hotfix, která je k dispozici v aktualizaci Service Pack SQL Server zahrnuta v další aktualizaci Service Pack SQL Server.

SQL Server 2008 Service Pack 2

Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 2 pro SQL Server 2008 Service Pack 2.

Poznámka: Vzhledem k tomu, že sestavení jsou kumulativní, každá nová verze opravy obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí SQL Server 2008 opravit vydání. Společnost Microsoft doporučuje zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

2402659 Sestavení SQL Server 2008, která byla vydána po vydání aktualizace SQL Server 2008 Service Pack 2 byla vydána microsoft SQL Server 2008 opravy hotfix jsou vytvořeny pro konkrétní SQL Server aktualizace Service Pack. Je nutné použít opravu hotfix SQL Server 2008 Service Pack 2 instalace SQL Server 2008 Service Pack 2. Ve výchozím nastavení je každá oprava hotfix, která je k dispozici v aktualizaci Service Pack SQL Server zahrnuta v další aktualizaci Service Pack SQL Server.

SQL Server 2005 Service Pack 3

Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 13 pro SQL Server 2005 Service Pack 3.

Poznámka: Vzhledem k tomu, že sestavení jsou kumulativní, každá nová verze opravy obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí SQL Server 2005 opravit vydání. Společnost Microsoft doporučuje zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

960598 Sestavení SQL Server 2005, která byla vydána po vydání opravy hotfix SQL Server 2005 Service Pack 3 společnosti Microsoft SQL Server 2005 jsou vytvořeny pro konkrétní SQL Server aktualizace Service Pack. Je nutné nainstalovat opravu hotfix SQL Server 2005 Service Pack 3 instalace SQL Server 2005 Service Pack 3. Ve výchozím nastavení je každá oprava hotfix, která je k dispozici v aktualizaci Service Pack SQL Server zahrnuta v další aktualizaci Service Pack SQL Server.  

SQL Server 2005 Service Pack 4

Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 1 pro SQL Server 2005 Service Pack 4.

Poznámka: Vzhledem k tomu, že sestavení jsou kumulativní, každá nová verze opravy obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí SQL Server 2005 opravit vydání. Společnost Microsoft doporučuje zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix.

Je nutné nainstalovat opravu hotfix SQL Server 2005 Service Pack 4 instalace SQL Server 2005 Service Pack 4. Ve výchozím nastavení je každá oprava hotfix, která je k dispozici v aktualizaci Service Pack SQL Server zahrnuta v další aktualizaci Service Pack SQL Server.

Stav

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Řešení

Nainstalujte tuto opravu hotfix a restartujte SQL Server může zvýšit výkon obnovení. Například výkon může být vylepšen pro následující operace po instalaci této opravy hotfix a restartování SQL Server:

  • Obnovení databáze

  • Zrcadlení databáze

  • Snímek databáze

  • Aktivity čtenáře protokolů transakční replikace databáze

Pokud tuto opravu hotfix nelze nainstalovat, můžete provést následující alternativní řešení ke zmírnění existujícího problému a zabránit budoucímu výskytu.

Zmírnění existujícího problému

  • Počkejte na dokončení operace obnovení nebo obnovení. Pokud máte neobnovovanou databázi, u které dochází k pomalému výkonu při obnovení nebo obnovení databáze, bude pravděpodobně nutné počkat na dokončení operace obnovení nebo obnovení. Může se například zobrazit stav offline nebo stav obnovení v SQL Server Management Studio (SSMS) pro neobnovovanou databázi. Zastavení SQL Server obvykle nenabízí žádnou úlevu pro pomalé obnovení a může trvat déle, než se zopakuje stejná fáze analýzy obnovení, fáze opakování nebo vrácení zpět.

  • Vyhněte se obnovení posloupnosti transakčního protokolu, která obsahuje tisíce virtuálních souborů VLF. Pokud při obnovování a obnovování databáze pomocí záložního souboru dochází k pomalému výkonu, můžete se vyhnout obnovení sekvencí transakčních protokolů, které obsahují tisíce souborů VLF. Pokud chcete zjistit záložní soubor, který obsahuje nejvíce zaznamenaných souborů virtuálních protokolů, pomocí následujícího příkazu zobrazte sloupce FirstLSN a LastLSN v souborech zálohování protokolů: RESTORE HEADERONLY FROM DISK='C:\folder\file.trn' Můžete se rozhodnout, že se nebudete obnovovat soubory zálohování protokolů. Nebo můžete použít příkaz STOP AT v příkazech RESTORE, abyste se vyhnuli vysoce fragmentovaným částem transakčních protokolů. Pokud během scénáře obnovení selhání plně neobnovíte sekvence protokolů až do posledního bodu v čase, dojde ke ztrátě dat ve vaší databázi SQL Server. K této ztrátě dat dochází, protože ne všechny transakce se uchovávají. Proto existuje obchodní rozhodnutí o kompromisu. Plně můžete obnovit vysoce fragmentovaný transakční protokol. Tato operace však může trvat mnoho hodin. Nebo můžete pomocí příkazu STOP AT v obnovení zastavit obnovení před vysoce fragmentovanou částí protokolu. Všechny chybějící transakce, které vynecháte, se však ztratí.Poznámka: Bez instalace této opravy hotfix obvykle neexistuje žádné bezpečné využití pro urychlené obnovení po restartování SQL Server. SQL Server musí najít seznam souborů VLF, aby bylo možné analyzovat soubory protokolu, znovu provést dokončené transakce, a pak vrátit zpět nedokončené transakce, aby se dokončilo obnovení, aby byla databáze bezpečně online. Během obnovení nemůžete transakce bezpečně přeskočit.

Zabránění budoucímu výskytu

  • Nastavte přírůstek automatického zvětšování databáze na odpovídající velikost. Pokud je velikost přírůstku automatického zvětšování příliš malá, bude existovat mnoho souborů virtuálních protokolů (VLF) a v SQL Server může docházet k nízkému výkonu. Pokud je velikost přírůstku automatického zvětšování příliš velká, dotazy, díky kterým se protokoly transakcí automaticky zvětšují, můžou muset dlouho čekat na dokončení růstu. Proto může dojít k chybě časového limitu v SQL Server. Pokud chcete tyto problémy obejít, můžete nastavit velikost přírůstku automatického zvětšování databáze na odpovídající velikost.

  • Eliminujte velký počet VLF a použijte ruční růst. Pokud se v transakčním protokolu nachází mnoho virtuálních počítačů, zmenšete velikost transakčního protokolu a zvyšte ho před špičkou, aby se poptávka splnila pomocí ručního růstu. Například transakční protokol se zvyšuje zpět na přiměřenou průměrnou velikost ve velkém přírůstku nebo v jednom ručním růstu. Proto velikost transakčního protokolu dosáhne maximální kapacity a soubory zálohování protokolů jsou naplánovány často a pravidelně. Kromě toho transakční protokol může být zkrácen a VLFs pro transakční protokol lze znovu použít v cyklu.

  • Ruční zmenšení a zvýšení transakčního protokolu Pokud chcete opravit protokol, který má příliš mnoho souborů VLF, zmenšete protokol následujícím postupem a znovu ho zvyšte ručně:

    1. Pokud je databáze v úplném nebo hromadně protokolovaném modelu obnovení, musíte zálohovat transakční protokol, aby se aktivní soubory VLF mohly zkrátit a znovu použít. BACKUP LOG databasename TO DISK='C:\folder\log_backupfile.trn' Další informace o zálohování souboru transakčního protokolu pomocí SSMS naleznete na následujícím webu Microsoft Developer Network (MSDN):

      Zálohování souboru transakčního protokolu pomocí SSMSDalší informace o zálohování souboru transakčního protokolu pomocí příkazů Jazyka Transact-SQL naleznete na následujícím webu MSDN:

      Zálohování souboru transakčního protokolu pomocí příkazů jazyka Transact-SQL

    2. Chcete-li zjistit logický název souboru transakčního protokolu, spusťte jeden z následujících příkazů.Příkaz 1 Příkaz exec sp_helpfile 2 select * from sys.sysfiles Chcete-li zmenšit velikost souboru transakčního protokolu na požadovanou velikost, použijte následující kód:DBCC SHRINKFILE(transactionloglogicalfilename, TRUNCATEONLY)

    3. Velikost souboru transakčního protokolu můžete zvětšit na odpovídající velikost. Doporučujeme, abyste velikost souboru transakčního protokolu zvětšili na běžnou velikost ve špičce. Proto se zabrání přírůstku automatického zvětšení. Pokud chcete nastavit velikost transakčního protokolu, použijte stránku Vlastnosti databáze v SSMS nebo použijte následující syntaxi ALTER DATABASE:MODIFY FILE (NAME = transactionloglogicalfilenae, SIZE=newtotalsize MB). Další informace o tom, jak zvětšit velikost databáze v nástroji SSMS, naleznete na následujícím webu MSDN:

      Jak zvětšit velikost databáze v SSMSDalší informace o syntaxi ALTER DATABASE MODIFY FILE naleznete na následujícím webu MSDN:

      Obecné informace o syntaxi ALTER DATABASE MODIFY FILE

Další informace

Počet segmentů VLF můžete zkontrolovat tak, že zkontrolujete soubor protokolu chyb SQL a pak najdete pořadové číslo protokolu (LSN) v každém záložním souboru transakčního protokolu. První číslice před symbolem dvojtečky v sítích LSN odpovídají číslu LSN.Například první číslo v první informační zprávě pro LSN je 1. První číslo v druhé informační zprávě pro LSN je však 100001. V tomto scénáři existuje 100 000 VLF, které se používají mezi časem první informační zprávy a druhou informační zprávou. Protokolovaný fragmentovaný transakční protokol, který má mnoho virtuálních souborů protokolů (VLFs), proto vypadá takto:  

{Protokol byl zálohován. Databáze: mydbname, datum vytvoření (čas): 2010/07/08(12:36:46), první LSN: 1:5068:70, poslední LSN: 1:5108:1, počet zařízení s výpisem paměti: 1, informace o zařízení: (FILE=1, TYPE=DISK: {'C:\folder\logbackup1.trn'}). Toto je jenom informační zpráva. Nevyžaduje se žádná akce uživatele.Protokol se zazálohoval. Databáze: mydbname, creation date(time): 2010/07/08(15:36:46), first LSN: 100001:5108:1, last LSN: 100002:5108:1, number of dump devices: 1, device information: (FILE=2, TYPE=DISK: {'C:\folder\logbackup2.trn'}). Toto je jenom informační zpráva. Nevyžaduje se žádná akce uživatele.} Následující tabulka obsahuje další informace o produktech nebo nástrojích, které automaticky kontrolují podmínku popsanou v části Příznaky ve vaší instanci SQL Server a ve verzích SQL Server, proti kterým se pravidlo vyhodnocuje.  

Software pravidel

Název pravidla

Popis pravidla

Verze produktu, pro které se pravidlo vyhodnocuje

System Center Advisor

SQL Server s transakční replikací může dojít k ovlivnění výkonu agenta čtenáře protokolů z důvodu velikosti transakčního protokolu nebo počtu VLF.

V tomto SQL Server poradce instance zjistil transakční replikaci stavu s výrazně větším počtem virtuálních počítačů nebo TLOG. Výkon agenta čtenáře protokolů je negativně ovlivněn velikostí transakčního protokolu nebo počtem VLF. Zmenšete velikost transakčního protokolu a počet VLF, abyste zlepšili výkon agenta čtečky protokolů.

SQL Server 2008 SQL Server 2008 R2 SQL Server 2012

 

Odkazy

Další informace o fyzické architektuře transakčního protokolu naleznete na následujícím webu MSDN:

Obecné informace o fyzické architektuře transakčního protokolu Další informace o pořadových číslech protokolu (LSN) naleznete na následujícím webu MSDN:

Obecné informace o pořadových číslech protokolu Další informace o chybě 1413 při spuštění zrcadlení databáze naleznete na následujícím webu MSDN:

Obecné informace o chybě 1413 při spuštění zrcadlení databáze Další informace o tom, jak může mít struktura souboru protokolu vliv na dobu obnovení databáze, naleznete na následujícím webu MSDN:

Vliv struktury souboru protokolu na dobu obnovení databáze Další informace o souborech VLFs transakčního protokolu naleznete na následujícím webu MSDN:

Obecné informace o souboru transakčního protokolu Další informace o vytvoření snímku databáze naleznete na následujícím webu MSDN:

Vytvoření snímku databázeDalší informace o modelu přírůstkové údržby pro SQL Server klepnutím na následující číslo článku databáze Microsoft Knowledge Base:

935897 Model přírůstkové údržby je k dispozici od týmu SQL Server dodávat opravy hotfix pro nahlášené problémyDalší informace o schématu pojmenování pro aktualizace SQL Server klepnutím na následující číslo článku databáze Microsoft Knowledge Base:

822499Nové schéma pojmenování pro balíčky aktualizací softwaru SQL Server společnosti MicrosoftDalší informace o terminologii aktualizací softwaru získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

824684 Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.