MSSQLSERVER_605

platí pro:SQL Server

Podrobnosti

Attribute Value
Název produktu SQL Server
ID události 605
Zdroj události MSSQLSERVER
Součást SQLEngine
Symbolický název CHYBNÁ STRÁNKA
Text zprávy Pokus o načtení logické stránky %S_PGID v databázi %d selhal. Patří do alokační jednotky %I64d, nikoli do %I64d.

Explanation

Tato chyba obvykle znamená poškození stránky nebo alokace v dané databázi. SQL Server detekuje poškození při čtení stránek patřících do tabulky, buď sledováním odkazů na stránky, nebo použitím Index Allocation Map (IAM). Všechny stránky přiřazené k tabulce musí patřit jedné z alokačních jednotek přiřazených k tabulce. Pokud ID alokační jednotky obsažené v hlavičce stránky neodpovídá ID alokační jednotky přiřazené k tabulce, tato výjimka se vyhodí. První ID alokační jednotky uvedené v chybové zprávě je ID přítomné v záhlaví stránky a druhá hodnota alokační jednotky je ID spojené s tabulkou.

Chyby poškození dat

Závažnost 21 naznačuje možné poškození dat. Možné příčiny jsou poškozený řetězec stránek, poškozený IAM nebo neplatný záznam v katalogu sys.objects pro daný objekt. Tyto chyby jsou často způsobeny selháním hardwaru nebo ovladače diskového zařízení.

Přechodné chyby

Úroveň závažnosti 12 naznačuje možnou přechodnou chybu; to znamená, že se vyskytuje v cache a neznamená poškození dat na disku. Přechodné chyby 605 mohou být způsobeny následujícími podmínkami:

  • Operační systém předčasně oznámí SQL Server, že operace I/O byla dokončena; chybová zpráva se zobrazí, i když neexistuje žádné skutečné poškození dat.

  • Spuštění dotazu pomocí hint Optimizeru NOLOCK nebo nastavení úrovně izolace transakce na READ UNCOMMITTED. Když dotaz používající úroveň izolace transakce NOLOCK nebo READ UNCOMMITTED pokusí přečíst data, která jsou přesouvána nebo měněna jiným uživatelem, dojde k chybě 605. Pro ověření, že jde o přechodnou chybu 605, spusťte dotaz později.

Obecně, pokud chyba nastane při přístupu k datům, ale následné operace DBCC CHECKDB proběhnou bez chyby, chyba 605 byla pravděpodobně přechodná.

Uživatelská akce

Pokud chyba 605 není přechodná, problém je závažný a musí být opraven vykonáním následujících úkolů:

  1. Identifikujte tabulky spojené s alokačními jednotkami uvedenými ve zprávě spuštěním následujícího dotazu. Nahraďte allocation_unit_id alokačními jednotkami uvedenými v chybové zprávě.

    USE [database_name];  
    
    GO  
    
    SELECT au.allocation_unit_id, OBJECT_NAME(p.object_id) AS table_name, fg.name AS filegroup_name,  
    
    au.type_desc AS allocation_type, au.data_pages, partition_number  
    
    FROM sys.allocation_units AS au  
    
    JOIN sys.partitions AS p ON au.container_id = p.partition_id  
    
    JOIN sys.filegroups AS fg ON fg.data_space_id = au.data_space_id  
    
    WHERE au.allocation_unit_id = '<allocation_unit_id>' OR au.allocation_unit_id = '<allocation_unit_id>'  
    
    ORDER BY au.allocation_unit_id;  
    
    GO  
    
  2. Spusť DBCC CHECKTABLE bez klauzule REPAIR v tabulce spojené s druhým identifikátorem alokační jednotky uvedeným v chybové zprávě.

  3. Spususťte DBCC CHECKDB bez klauzule REPAIR co nejdříve, abyste zjistili plný rozsah poškození celé databáze.

  4. Zkontrolujte chybový log, zda se neobjeví další chyby, které často doprovázejí chybu 605, a prohlédněte si Windows Event Log, zda nemáte nějaké systémové nebo hardwarové problémy. Opravte jakékoliv hardwarové problémy, které jsou obsaženy v logech.

Pokud problém není hardwarový, proveďte jeden z následujících úkolů:

  1. Obnovte databázi z známé čisté zálohy. Funkci obnovy stránek můžete využít k obnovení pouze poškozených stránek.

  2. Spusť DBCC CHECKDB s klauzulí REPAIR doporučenou operací DBCC CHECKDB provedenou v kroku 3 k opravě poškození. Pokud spuštění DBCC CHECKDB s jednou z klauzul REPAIR problém nevyřeší, kontaktujte svého primárního poskytovatele podpory. Mějte výstup z DBCC CHECKDB k dispozici k nahlédnutí.

    Caution

    Pokud si nejste jisti, jaký dopad má DBCC CHECKDB s klauzulí REPAIR na vaše data, kontaktujte svého primárního poskytovatele podpory před spuštěním tohoto prohlášení.

  • DBCC CHECKTABLE (Transact-SQL)