Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Details
| Attribute | Waarde |
|---|---|
| Productnaam | SQL Server |
| Gebeurtenis-id | 824 |
| Bron van gebeurtenis | MSSQLSERVER |
| Onderdeel | SQLEngine |
| Symbolische naam | B_HARDSSERR |
| Berichttekst | SQL Server heeft een I/O-fout op basis van logische consistentie gedetecteerd: %ls. Dit gebeurde tijdens een %S_MSG van pagina %S_PGID in database-id %d bij offset %#016I64x in bestand '%ls'. Aanvullende berichten in het SQL Server-foutenlogboek of het foutenlogboek van het besturingssysteem bevatten mogelijk meer details. Dit is een ernstige foutvoorwaarde die de database-integriteit bedreigt en onmiddellijk moet worden gecorrigeerd. Voltooi een volledige databaseconsistentiecontrole (DBCC CHECKDB). Deze fout kan worden veroorzaakt door veel factoren; Zie https://go.microsoft.com/fwlink/?linkid=2252374voor meer informatie. |
Symptoom
Mogelijk ziet u het volgende foutbericht in het SQL Server-foutenlogboek of het gebeurtenislogboek van windows-toepassingen als een logische consistentiecontrole mislukt na het lezen of schrijven van een databasepagina:
2022-11-02 15:46:42.90 spid51 Error: 824, Severity: 24, State: 2.
2022-11-02 15:46:42.90 spid51 SQL Server detected a logical consistency-based I/O error: incorrect pageid (expected 1:43686; actual 0:0). It occurred during a read of page (1:43686) in database ID 23 at offset 0x0000001554c000 in file 'H:\MSSQL16.MSSQLSERVER\MSSQL\DATA\my_db.mdf'. Additional messages in the SQL Server error log or operating system error log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see https://go.microsoft.com/fwlink/?linkid=2252374.
Als een SELECT- of DML-query in dit bericht wordt uitgevoerd, wordt het foutbericht geretourneerd naar de toepassing en wordt de databaseverbinding beƫindigd.
Oorzaak
Deze fout geeft aan dat Windows rapporteert dat de pagina succesvol van de schijf is gelezen, maar dat SQL Server daarna iets fout heeft ontdekt op de pagina. Deze fout is vergelijkbaar met fout 823, behalve dat Windows de fout niet heeft gedetecteerd. Fout 824 duidt meestal op een probleem in het I/O-subsysteem, zoals defecte schijfstations, firmwareproblemen, defecte apparaatstuurprogramma's, enzovoort. Zie Microsoft SQL Server I/O Basics, Hoofdstuk 2, voor meer informatie over I/O-fouten.
SQL Server gebruikt de volgende Windows-API's om de I/O-bewerkingen uit te voeren: ReadFile, WriteFile, ReadFileScatteren WriteFileGather. Na het voltooien van deze I/O-bewerkingen controleert SQL Server op eventuele foutvoorwaarden die zijn gekoppeld aan deze API-aanroepen. Als deze API-aanroepen mislukken met een besturingssysteemfout, meldt SQL Server fout 823. Er kunnen situaties zijn waarin de Windows API-aanroep daadwerkelijk slaagt, maar de gegevens die door de I/O-bewerking worden overgedragen, kunnen een logisch consistentieprobleem hebben aangetroffen. Deze logische consistentieproblemen worden gerapporteerd via fout 824.
De fout 824 bevat de volgende informatie:
- Het databasebestand waarop de I/O-bewerking wordt uitgevoerd
- De offset van het bestand waar de I/O-bewerking is geprobeerd
- De database waartoe dit bestand behoort
- Het paginanummer dat betrokken was bij de I/O-bewerking
- Was de bewerking een lees- of schrijfbewerking
- Details over de logische consistentiecontrole die is mislukt (het type controle, de werkelijke waarde en de verwachte waarde die voor deze controle wordt gebruikt)
Deze logische consistentiecontroles zijn integriteitscontroles die door SQL Server worden uitgevoerd om ervoor te zorgen dat de belangrijkste elementen van de gegevens die betrokken waren bij de I/O-overdracht, tijdens de I/O-bewerking intact blijven. De controles omvatten Controlesom, Gescheurde Pagina, Korte Overdracht, Ongeldige Pagina-ID, Oud Lezen en Paginacontrolefout. De aard van de uitgevoerde controles is afhankelijk van verschillende configuratieopties op database- en serverniveau.
Het foutbericht 824 geeft meestal aan dat er een probleem is met het onderliggende opslagsysteem of de hardware of een stuurprogramma dat zich in het pad van de I/O-aanvraag bevindt. U kunt deze fout tegenkomen wanneer er inconsistenties zijn in het bestandssysteem of als het databasebestand is beschadigd.
Resolutie / Besluit
Als u fout 824 tegenkomt, kunt u de volgende oplossingen proberen:
Controleer de suspect_pages tabel in
msdbom te controleren of dit probleem op andere pagina's (in dezelfde database of in verschillende databases) optreedt.SELECT * FROM msdb..suspect_pages WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);Controleer de consistentie van de databases die zich in hetzelfde volume bevinden (zoals de database die in het 824-bericht is gerapporteerd) met behulp van de DBCC CHECKDB-opdracht. Als u inconsistenties van de
DBCC CHECKDBopdracht vindt, gebruikt u de richtlijnen uit het Knowledge Base-artikel Het oplossen van databaseconsistentiefouten die door DBCC CHECKDB zijn gerapporteerd.DBCC CHECKDB;Als voor de database met deze 824-fouten de databaseoptie niet
PAGE_VERIFY CHECKSUMis ingeschakeld, schakelt u de optie onmiddellijk in. 824-fouten kunnen om andere redenen optreden dan een controlesomfout, maar CHECKSUM biedt de beste optie om de consistentie van de pagina te controleren nadat deze naar de schijf is geschreven. Gebruik dit script om databases te identificeren waarvoor de optie CHECKSUM niet is ingeschakeld:SELECT * FROM sys.databases WHERE page_verify_option_desc != 'CHECKSUM';Controleer de Windows-gebeurtenislogboeken op eventuele fouten of berichten die zijn gerapporteerd vanuit het besturingssysteem of een opslagapparaat of een apparaatstuurprogramma. Als ze op een bepaalde manier zijn gerelateerd aan deze fout, moet u deze fouten eerst oplossen. Naast het 824-bericht ziet u bijvoorbeeld ook een gebeurtenis zoals 'Het stuurprogramma heeft een controllerfout gedetecteerd op \Device\Harddisk4\DR4' die is gerapporteerd door de schijfbron in het gebeurtenislogboek. In dat geval moet u evalueren of dit bestand aanwezig is op dit apparaat en vervolgens eerst deze schijffouten corrigeren.
Gebruik het hulpprogramma SQLIOSim om erachter te komen of deze 824-fouten buiten reguliere I/O-aanvragen van SQL Server kunnen worden gereproduceerd. SQLIOSim wordt geleverd met SQL Server 2008 (10.0.x) en latere versies, dus er is geen afzonderlijke download nodig.
Neem contact op met uw hardwareleverancier of apparaatfabrikant om het volgende te garanderen:
- De hardwareapparaten en configuratie voldoen aan de I/O-vereisten van SQL Server.
- De apparaatstuurprogramma's en andere ondersteunende softwareonderdelen van alle apparaten in het I/O-pad worden bijgewerkt.
Als de hardwareleverancier of apparaatfabrikant u een diagnostisch hulpprogramma heeft geleverd, gebruikt u deze om de status van het I/O-systeem te evalueren.
Evalueer of er filterstuurprogramma's bestaan op het I/O-pad van deze aanvragen. U kunt de volgende opdrachten uitvoeren om alle filterstuurprogramma's op het systeem weer te geven:
fltmc filters fltmc instances- Sluit database- en logboekbestanden uit om te worden gescand door dergelijke filterstuurprogramma's. Zie Mappen en bestandsnaamextensies om uit te sluiten van virusscans voor meer informatie
- Controleer of er updates voor deze filterstuurprogramma's zijn
- Kunnen deze filterstuurprogramma's worden verwijderd of uitgeschakeld om te zien of het probleem dat resulteert in de 824-fout verdwijnt?
Als u een virtuele machine uitvoert, controleert u of alle virtualisatiestuurprogramma's worden bijgewerkt of neem contact op met de leverancier van virtualisatie voor meer informatie.
Als het probleem geen hardwaregerelateerd is en er een bekende schone back-up beschikbaar is, herstelt u de database vanuit de back-up.