Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op:SQL Server
Bijzonderheden
| Attribute | Waarde |
|---|---|
| Productnaam | SQL Server |
| Gebeurtenis-id | 9017 |
| Bron van gebeurtenis | MSSQLSERVER |
| Onderdeel | SQLEngine |
| Symbolische naam | LOG_MANY_VLFS |
| Berichttekst | Database-%ls heeft meer dan %d virtuele logboekbestanden die te veel zijn. Te veel virtuele logboekbestanden kunnen lange opstart- en back-uptijden veroorzaken. Overweeg het logboek te verkleinen en een andere groeitoename te gebruiken om het aantal virtuele logboekbestanden te verminderen. |
Explanation
Tijdens het opstarten van een database detecteert SQL Server dat een database een groot aantal virtuele logboekbestanden (VLF's) heeft en registreert dit foutbericht. De situaties waarin u de fout kunt tegenkomen, zijn:
- Wanneer u een exemplaar van SQL Server start
- Een database herstellen
- Een database koppelen
Het informatiebericht 9017 dat vergelijkbaar is met dit voorbeeld, wordt vastgelegd in het SQL Server-foutenlogboek:
Database dbName has more than n virtual log files which is excessive. Too many virtual log files can cause long startup and backup times. Consider shrinking the log and using a different growth increment to reduce the number of virtual log files. Too many virtual log files can adversely affect the recovery time of the database.
Als u bovendien replicatie-, databasespiegeling- of AlwaysOn-technologieën in uw omgeving gebruikt, merkt u mogelijk prestatieproblemen met deze technologieën.
Het effect van veel VLF's op replicatie
Te veel logboekbestanden kunnen van invloed zijn op replicatie omdat het logboeklezerproces elk virtueel logboekbestand moet scannen op transacties die zijn gemarkeerd voor replicatie. U kunt dit gedrag zien door de prestaties van de sp_replcmds opgeslagen procedure te traceren. Het logboeklezerproces maakt gebruik van de sp_replcmds opgeslagen procedure om de virtuele logboekbestanden te scannen en de transacties te lezen die zijn gemarkeerd voor replicatie.
Oorzaak
Dit probleem treedt op wanneer u kleine waarden opgeeft voor de FILEGROWTH parameter voor uw transactielogboekbestand(en).
De SQL Server Database Engine verdeelt elk fysiek logboekbestand intern in verschillende virtuele logboekbestanden (VLF's). SQL Server 2008 R2 Service Pack 2 heeft een nieuw bericht (9017) geïntroduceerd dat wordt geregistreerd wanneer een database wordt gestart (vanwege het starten van een exemplaar van SQL Server of vanwege het koppelen of herstellen van de database) en meer dan 10.000 VLFS in SQL Server 2008 R2 of meer dan 10.000 VLFS heeft in SQL Server 2012 en latere versies.
Opmerking
In SQL Server 2012, hoewel dit bericht wordt geregistreerd wanneer de database 10.000 VLF's heeft, geeft het werkelijke bericht dat wordt gerapporteerd in het foutenlogboek onjuist de status '1000 VLF'. De waarschuwing treedt op na 10.000 VLF's. Het bericht rapporteert echter 1000 VLF's. Dit probleem wordt opgelost in latere versies.
Gebruikersactie
Volg deze stappen om dit probleem op te lossen:
U kunt het aantal VLF's en de gemiddelde grootte van uw SQL Server bekijken met behulp van deze query. Het resultaat helpt u bij het identificeren van de databases waarop u zich wilt richten:
SELECT db.name, count(dbl.database_id) AS Total_VLF_count, CONVERT (DECIMAL (10, 2), avg(dbl.vlf_size_mb)) AS Avg_VLF_Size_MB FROM sys.databases AS db CROSS APPLY sys.dm_db_log_info(db.database_id) AS dbl GROUP BY db.name ORDER BY Total_VLF_count DESC;Zie sys.dm_db_log_info voor meer informatie.
Verminder uw transactielogboek met behulp van
DBCC SHRINKDB/DBCC SHRINKFILEof met behulp van SQL Server Management Studio.Voer een eenmalige toename van de grootte van het transactielogboekbestand uit naar een grote waarde. Deze eenmalige toename wordt uitgevoerd om regelmatige automatische groei te voorkomen. Zie De grootte van het transactielogboekbestand beheren voor meer informatie.
Verhoog de
FILEGROWTHparameter naar een grotere waarde dan wat momenteel is geconfigureerd. Dit moet zijn gebaseerd op de activiteit van uw database en hoe vaak uw logboekbestand groeit.Daarnaast kunt u de volgende artikelen met oplossingen bekijken, afhankelijk van de versie van SQL Server die u momenteel uitvoert:
Aanbeveling
Als u de optimale VLF-distributie wilt bepalen voor de huidige transactielogboekgrootte van alle databases in een bepaald exemplaar en de vereiste groeiverhogingen om de vereiste grootte te bereiken, raadpleegt u dit script.